`
kujo
  • 浏览: 22598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

awk实现group by ,统计log最大访问的ip

阅读更多
之前遇到的问题,
怎么统计log中,哪些ip访问的次数最多。
主要思路就是awk+sort

根据第二个字段进行分组计算数量可以使用:
例子:
1  A  1
2  B  2
3  C  1
4  D  1
5  E  3
6  A  2
7  B  1
8  C  2
9  D  3

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

结果:
A 2
B 2
C 2
...


awk的数组
其下标可以是任意字符或者字符串。比如a[bob],表示数组a的一个元素,它的下标是"bob"。
上面例子中就是把$2当数组下标,value是次数。

然后再用sort排序
-k 使用哪个字段排序
-n 按照数值来排序  9 < 10
-r 倒序
-t<分隔字符>  指定排序时所用的栏位分隔字符

sort -n -k 2 filename > 输出结果filename


除了以上方法外,还可以使用uniq
uniq去重复
uniq -c 在输出行前面加上每行在输入文件中出现的次数。

awk '{print $2}'filename| sort | uniq -c | sort -n

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics