【发布时间】:2014-06-04 04:02:01
【问题描述】:
所以我试图通过 HTTP 错误日志进行 grep,取出结果中的所有 IP,然后对它们进行排序,以便它们按匹配总数的顺序显示(忽略任何“单个”匹配),以便我知道要阻止哪些 IP。
到目前为止我的命令:
grep "File does not exist" local1.log | awk '{print $13;}' | sort -g | uniq -c | sort -n -k 1,1
上述命令的输出:
5599 200.71.211.187]
6439 91.102.160.191]
10448 84.92.84.166]
14181 27.159.226.198]
20170 93.90.177.167]
现在我有一种感觉,我正在做太多的管道传输和 uniq/sort 的某种混蛋使用......
我之前的尝试是:
grep "File does not exist" local1.log | awk '{print $13;}' | uniq -dc | sort -n -k 1,1
这给了我来自 uniq 的重复输出,然后按排序中的总“匹配”排序。
TL;DR:
必须有一种更...优雅的方式来完成我正在尝试做的事情,有什么建议吗? ^^
Edit -sort -u 给了我一个垃圾列表,其中包含单个匹配项,例如:
1 99.92.71.147]
1 99.92.86.7]
1 99.93.12.115]
1 99.9.4.241]
1 99.95.215.81]
1 99.95.96.7]
1 99.99.113.194]
1 99.99.185.1]
【问题讨论】:
标签: regex sorting awk grep uniq