面试题答案
一键面试awk '$3 == 404 {ips[$2]++} END {for (ip in ips) {print ips[ip], ip}}' log.txt | sort -nr
上述命令解释如下:
awk '$3 == 404 {ips[$2]++}'
:遍历log.txt
文件每一行,当第三列(状态码)为404时,将对应的第二列(访问IP)作为数组ips
的索引,并将其值加1。END {for (ip in ips) {print ips[ip], ip}}
:在处理完所有行后,遍历ips
数组,输出每个IP出现的次数以及对应的IP。sort -nr
:对前面awk
输出的结果按第一列(出现次数)进行逆序(从高到低)排序。