1.命令
grep '13/Oct/2021' /root/data/tmp/log/access.log|awk -F [" "] '{print $4$5 "apisix:" $10 " server:"$(NF-1)}'|cut -c 1-15,28-60|grep 507|sort|uniq -c|sort -nr|head -n 100
2.解释
(1)grep '13/Oct/2021' //查询固定日期
(2)/root/data/log/access.log //日志目录
(3)awk -F [" "] '{print $4$5 "apisix:" $10 " server:"$(NF-1)}' //awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。awk 命令默认分隔符为空格或制表符。
(4)cut -c 1-15: 截取awk已经简化后的文本,这里是截取按小时截取时间.
(5)grep 507: 我这里是只查询状态码为507的日志行
(6)sort:进行排序.
(7)uniq -c:打印每一重复行出现的次数。(并去掉重复行).(按照awk截取的日志格式去统计重复出现的日志行)
(8)sort -nr:按照重复行出现的次序倒序排列。
(9)head -n 100:取排在前100位的IP.