免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1818 | 回复: 6

求教文本巧处理 [复制链接]

论坛徽章:
2
2015年亚洲杯之巴勒斯坦
日期:2015-02-15 12:11:292015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2009-09-13 00:58 |显示全部楼层
例如有test.txt文件
1 aaa  1000
2  bbb  1000
3  aaa  1000
4  aaa  1000
5  ccc  1000
6  bbb  1000
要求产生新文件格式为
1 aaa  3000
2  bbb  2000
5  ccc  1000
请各位高手指点,谢谢!

论坛徽章:
0
发表于 2009-09-13 07:28 |显示全部楼层
如下:
olive:~/tmp> cat aaa.txt
1  aaa  1000
2  bbb  1000
3  aaa  1000
4  aaa  1000
5  ccc  1000
6  bbb  1000
olive:~/tmp> gawk '{if (0 == a[ $2 ]) a[ $2 ] = $1; b[ $2 ]+=$3;} END{for(i in a) print  a[ i ], i, b[ i ];}' aaa.txt  | sort
1 aaa 3000
2 bbb 2000
5 ccc 1000
olive:~/tmp>  

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2009-09-13 08:53 |显示全部楼层
sort|awk

论坛徽章:
0
发表于 2009-09-13 09:09 |显示全部楼层
  1. awk '!a[$2]++{b[++n]=$1" "$2}{c[$2]+=$3}END{for (i=1;i<=n;i++) {split(b[i],d," ");print b[i],c[d[2]]}}' file
复制代码

论坛徽章:
2
2015年亚洲杯之巴勒斯坦
日期:2015-02-15 12:11:292015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2009-09-13 12:15 |显示全部楼层
哦,明白,谢谢大家

论坛徽章:
0
发表于 2009-09-14 11:56 |显示全部楼层
原帖由 yy_galois 于 2009-9-13 07:28 发表
如下:
olive:~/tmp> cat aaa.txt
1  aaa  1000
2  bbb  1000
3  aaa  1000
4  aaa  1000
5  ccc  1000
6  bbb  1000
olive:~/tmp> gawk '{if (0 == a[ $2 ]) a[ $2 ] = $1; b[ $2 ]+=$3;} END{for(i i ...



这里的0==a[$2]是什么意思啊?

论坛徽章:
0
发表于 2009-09-14 14:29 |显示全部楼层
  1. awk '{a[$2]?ff=ff:a[$2]=$1;b[$2]+=$3}END{for(f in b){print a[f],f,b[f]}}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP