awk小试牛刀

来源:互联网 发布:勇士vs火箭季后赛数据 编辑:程序博客网 时间:2024/05/16 11:00

这两天学习了一下linux经典命令——awk,发现真是个不错的东西,没有早点认识到它的厉害,不然平时可以少写好多处理文件的python脚本啊!

学完就要用,不然就要忘,随手google了一下“awk面试题”,发现一道卡巴斯基面试题:有一个文件scores.txt,内容如下:

jack  huaxue   90
tom  huaxue    70
jack  shuxue    99
tom  shuxue    80

要求用shell得到每个人的平均分,思路很简单,要是python的话直接dict记住总分再记住科目数,最后一除就行了。但是要求用shell,怎么办?还好awk就有关联数组的功能,因此写出如下脚本aver.awk:

{if(NF == 3){if($1 in arr){arr[$1] += $3cnt[$1]++;}else{arr[$1] = $3;cnt[$1] = 1;}}}END{for(k in arr){print k " aver:" arr[k]/cnt[k]}}

最后运行 awk -f aver.awk scores.txt

得到结果:

jack aver:94.5
tom aver:75


整个过程在一分钟以内,awk确实很强大!


原创粉丝点击