帮忙解释一下一个AWK语句,谢谢

wuyz124 2008-09-03 08:05:11
对于数据文件如:
abc 10
def 28
abc 2
abc 20
可以使用脚本:
awk ' { arr[$1]=arr[$1]+$2 } END { for( key in arr) { print key , arr[key] } } ' filename
来对不同的行计算group sum.

请问这个语句怎么理解呢?请具体给出每部分的作用,谢谢了.
...全文
93 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinfkong 2008-09-03
  • 打赏
  • 举报
回复
awk --- 执行程序
'BEGIN{...}{...}END{...}' --- 引号内一般有三块, BEGIN, 中间, END, 你的程序省了BEGIN(一般做初始化操作).
中间的那块,每读到文件的一行都执行一次.
{arr[$1]=arr[$1]+$2},$1表示一行中的第一栏,分隔符为空格,在你的例子中,abc, def等都是第一栏. $2是第二栏.
这句语句,在你的例子中,相当于:
arr['abc'] = arr['abc'] + 10
...
所以相当于把所有累加.
END后面就把它全部输出.

19,620

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧