综合应用

统计NGINX访问IP

统计Nginx日志中每个IP的访问量有多少,日志如下:
192.168.56.1 - - [21/May/2018:20:44:06 -0400] "GET /index.html HTTP/1.0" 404 169 "-" "ApacheBench/2.3" "-"/code/index.html

解答
[root@as4k ~]# awk '{ip[$1]++} END{for (i in ip) print i,ip[i]}' access.log  | sort -rnk2 | column -t | head
58.220.223.62    12049
112.64.171.98    10856
114.83.184.139   1982
117.136.66.10    1662
115.29.245.13    1318
223.104.5.197    961
116.216.0.60     957
180.111.48.14    939
223.104.5.202    871
223.104.4.139    869

awk处理文本

有一文本文件lessons.txt内容如下,请使用awk处理该文本,并输出内容如result.txt
lessons.txt
634751 预排
568688 预排
386760 删除
619373 预排
428491 预排
487563 完成
603342 完成
436339 完成

result.txt
删除 386760
完成 487563,603342,436339
预排 634751,568688,619373,428491

awk '{array[$2]=array[$2]?array[$2]","$1:array[$2]$1}END{for (i in array) print i,array[i]}' lessons.txt



awk脚本
#!/bin/awk 
#filename: les.awk
{
    if (array[$2] == "") {
        array[$2] = array[$2]$1
    } else {
        array[$2] = array[$2]","$1
    }
}

END {
    for (i in array) {
        print i,array[i]
    }
}

awk -f les.awk lessons.txt