access_log 是一个日志文件,现在对里面的IP地址进行统计,并且按数量进行降序排序。
日志样式如:
211.143.50.68 - - [13/Oct/2014:17:05:40 +0800] "POST /mobile/user/login.
216.58.115.41 - - [13/Oct/2014:17:05:40 +0800] "POST /mobile/user/
119.251.70.91 - - [13/Oct/2014:17:05:40 +0800] "POST /mobile/user/
223.98.200.171 - - [13/Oct/2014:17:05:40 +0800] "POST /mobile/
223.98.200.171 - - [13/Oct/2014:17:05:40 +0800] "POST /GameCallBack
命令:awk '{a[$1]++} END{for(i in a){print i,a[i] | "sort -r -n -k 2"}}' access_log
统计结果为:ip 数量,如:
42.62.86.204 222096
106.3.40.36 104001
120.42.197.250 98855
123.84.153.73 72438
42.62.29.140 55620
123.84.163.107 54370
命令说明:
a[$1]++ :默认是以空格为分隔符的,ip地址是第一个字段,所以a[$1]++就是统计每个ip出现的数量,
END:表示为脚本运行完之后要执行的语句,即之后的打印排序
sort -r -n -k:是排序 -r:是倒序; -n:是以数字的形式排序,默认是以字符的形式排序;-k是以那个字段进行排序,因为print i a[i],所以统计的数量是第二个字段,所以此处是2.