找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26240|回复: 7

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

[复制链接]
发表于 2015-4-30 23:24:58 | 显示全部楼层 |阅读模式
本帖最后由 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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-4-30 23:56:39 | 显示全部楼层
  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技术 +1 收起 理由
heng520 + 1 非常感谢,乐于助人,我要向你学习!

查看全部评分

 楼主| 发表于 2015-5-1 00:10:36 | 显示全部楼层
回复 2# bailong360

太感动了,这么晚了还能帮我解题,非常感谢!
发表于 2015-5-1 00:18:37 | 显示全部楼层
回复 3# heng520

问题解决后,请编辑顶楼帖子在标题前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
发表于 2016-7-21 18:46:49 | 显示全部楼层
第三方
  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"
复制代码
发表于 2016-9-1 18:28:59 | 显示全部楼层
回复 2# bailong360
  1. for /f "useback tokens=1,2,3 delims=," %%i in ("aaa.txt") do set /a "#%%i#%%j+=%%k"
复制代码
这一句为什么不是usebackq
发表于 2016-9-1 19:28:36 | 显示全部楼层
回复 6# idos
usebackq和useback都行,微软就是这么规定的。
发表于 2016-9-4 15:15:15 | 显示全部楼层
回复 7# happy886rr


    哦好,谢谢解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:00 , Processed in 0.012585 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表