Board logo

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

作者: heng520    时间: 2015-4-30 23:24     标题: [已解决]批处理如何将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
作者: bailong360    时间: 2015-4-30 23:56

  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
复制代码

作者: heng520    时间: 2015-5-1 00:10

回复 2# bailong360

太感动了,这么晚了还能帮我解题,非常感谢!
作者: bailong360    时间: 2015-5-1 00:18

回复 3# heng520

问题解决后,请编辑顶楼帖子在标题前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: pcl_test    时间: 2016-7-21 18:46

第三方
  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"
复制代码

作者: idos    时间: 2016-9-1 18:28

回复 2# bailong360
  1. for /f "useback tokens=1,2,3 delims=," %%i in ("aaa.txt") do set /a "#%%i#%%j+=%%k"
复制代码
这一句为什么不是usebackq
作者: happy886rr    时间: 2016-9-1 19:28

回复 6# idos
usebackq和useback都行,微软就是这么规定的。
作者: idos    时间: 2016-9-4 15:15

回复 7# happy886rr


    哦好,谢谢解答




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2