怎么统计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