awk命令结合数组实例解疑

xuhao167 2014-04-23 06:25:28
-------------------------------------------
cat test_array>
a 2
b 3
c 6
a 8
d 9
---------------------------------------
awk '{a[$1]+=$2;b[$1]++} END { for(i in a) print b[i],ia[i]}' test_array
结果如下:
2 a 10
1 b 3
1 c 6
1 d 9
---------------------疑问在于{a[$1]+=$2;b[$1]++} 是如何执行的想不通,这两条之间是因果关系吗,还有就是awk如何读文件,并执行这两条命令的;
-----------------------------------------------------令附加一个问题:awk是如何根据第一列去重的
cat filename | awk '!a[$1]++'
-------------------------------------------------------
...全文
123 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljc007 2014-04-24
  • 打赏
  • 举报
回复
读文件的第1行,执行命令{a[a]+=2;b[a]++} 读文件的第2行,执行命令{a[b]+=3;b[b]++} 读文件的第3行,执行命令{a[c]+=6;b[c]++} 读文件的第4行,执行命令{a[c]+=8;b[a]++} 读文件的第5行,执行命令{a[d]+=9;b[d]++} 读完之后,执行命令{ for(i in a) print b[i],ia[i]}
ljc007 2014-04-24
  • 打赏
  • 举报
回复
引用
疑问在于{a[$1]+=$2;b[$1]++} 是如何执行的想不通,这两条之间是因果关系吗
不是因果关系。 数组a保存是的第一列的字母对应的第二列的数字之和,数组b保存的是第一列的字母出现的次数。
引用
还有就是awk如何读文件,并执行这两条命令的;
读文件的第1行,执行命令{a[a]+=2;b[a]++} 读文件的第2行,执行命令{a[b]+=$2;b[b]++} 读文件的第3行,执行命令{a[c]+=$2;b[c]++} 读文件的第4行,执行命令{a[c]+=$2;b[a]++} 读文件的第5行,执行命令{a[d]+=$2;b[d]++} 读完之后,执行命令{ for(i in a) print b[i],ia[i]}
引用
令附加一个问题:awk是如何根据第一列去重的
参考: http://bbs.chinaunix.net/viewthread.php?tid=1672726#pid11904888

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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