[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何将txt文本第一列内容相同的行的最后一列的数字相加

本帖最后由 pcl_test 于 2016-11-26 02:07 编辑

小弟不材,想了好几天没写出来,才来论坛求助,希望各位高手帮帮忙解下题 ,在此先谢谢各位了~

比如,aaa.txt 内容如下
11111,20150430,10
11111,20150430,20
11111,20150430,30
22222,20150430,40
33333,20150430,50
44444,20150430,60
44444,20150430,70
55555,20150430,80
66666,20150430,90
66666,20150430,100
77777,20150430,110

以逗号分隔三段,用第一段来匹配相同,比如 第一行 11111 来匹配,那么第二第三行就认为与第一行相同,然后相同行的第三段数值相加。
最终结果如下:
11111,20150430,60
22222,20150430,40
33333,20150430,50
44444,20150430,130
55555,20150430,80
66666,20150430,190
77777,20150430,110
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. for /f "useback tokens=1,2,3 delims=," %%i in ("aaa.txt") do set /a "#%%i#%%j+=%%k"
  3. (for /f "tokens=1,2,3 delims=#=" %%i in ('set #') do echo %%i,%%j,%%k)>New_aaa.txt
复制代码
1

评分人数

    • heng520: 非常感谢,乐于助人,我要向你学习!技术 + 1

TOP

回复 2# bailong360

太感动了,这么晚了还能帮我解题,非常感谢!

TOP

回复 3# heng520

问题解决后,请编辑顶楼帖子在标题前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

第三方
  1. gawk -F"," "{a[$1\",\"$2]+=$3;}END{slen=asorti(a,b);for(i=1;i<=slen;i++)print b[i]\",\"a[b[i]]}" "1.txt">"2.txt"
复制代码

TOP

回复 2# bailong360
  1. for /f "useback tokens=1,2,3 delims=," %%i in ("aaa.txt") do set /a "#%%i#%%j+=%%k"
复制代码
这一句为什么不是usebackq

TOP

回复 6# idos
usebackq和useback都行,微软就是这么规定的。

TOP

回复 7# happy886rr


    哦好,谢谢解答

TOP

返回列表