免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1457 | 回复: 3
打印 上一主题 下一主题

[文本处理] awk 求和指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-26 10:56 |只看该作者 |倒序浏览
本帖最后由 zhaolianghz 于 2016-04-26 11:01 编辑

[root@shell ~]# cat test3
a 200 123
a 12 32
a 32 3
b 1200 aaa
b 1 22
b 22 22
c 333 333
d 222 333

对第2行进行求和

awk '{num[$1]+=$2} END{for(i in num) print i,num} ' test3

看了半天不明白这段话的含义,求解释

另外如果要对第三列也进行求和,输出第1,2,3列,该如何写呢

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2016-04-26 11:49 |只看该作者
本帖最后由 jason680 于 2016-04-26 11:52 编辑

回复 1# zhaolianghz

http://bbs.chinaunix.net/thread-2309494-1-1.html

$ awk '{a[$1]+=$2;b[$1]+=$3}END{for(n in a)print n,a[n],b[n]}' test3
a 244 158
b 1223 44
c 333 333
d 222 333

$ cat test3
a 200 123                 # a[$1]+=$2 => a["a"]+=200 => a["a"]=200, b["a"]=123
a 12 32                     # a["a"]=212 (200+12), b["a"]=155 (123+32)
a 32 3                       # a["a"]=245 (212+32), b["a"]=158 (155+3)
b 1200 aaa                # a["b"]=1200, b["b"]=0  (aaa convert to number 0)
b 1 22                       # ....
b 22 22
c 333 333                  # a["c"]=333, b["c"]=333
d 222 333                  # a["d"]=222, b["d"]=333

   

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
3 [报告]
发表于 2016-04-26 11:52 |只看该作者
awk '{a[$1]=a[$1]+$2;b[$1]+=$3}END{for(i in a)print i,a[i],b[i]}' file

论坛徽章:
0
4 [报告]
发表于 2016-04-26 14:01 |只看该作者
回复 2# jason680

谢谢

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP