shell awk 统计反复个数

shell awk 统计重复个数

有文件file.log内容如下:

http://www.sohu.com/aaa

http://www.sina.com/111

http://www.sohu.com/bbb

http://www.sina.com/222

http://www.sohu.com/ccc

http://www.163.com/zzz

http://www.sohu.com/ddd


要统每个域名出现次数:

http://www.sohu.com 4

http://www.sina.com 2

http://www.163.com 1


答案是:  awk -F / '{a[$3]++} END{for(i in a){print i,a[i] | "sort -r -k 2"}}' file.log;


解释一下,awk语法就不说了:


-F参数是制定awk分隔符,这里制定的是 /,所以每行被分成4个部分。


sort 的-r是降序,-k是按照第几组字符排序,从1开始。


a可以理解成key-value形式的对象,域名做key 个数做value。

在end动作里完成对结果a的打印,


注意: 这个方法还可以用来统计日志中响应时间等等。