fal*_*tro 14
你至少需要一条短管道.
sed -e 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*$/\1/' -e t -e d access.log | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
这将打印每个IP(虽然只能用于ipv4),前缀为计数.
我用apache2的access.log测试了它(虽然它是可配置的,所以你需要检查),它对我有用.它假设IP地址是每一行的第一件事.
sed收集IP地址(实际上它查找4组数字,其间有句点),并用它替换整行.-e t如果它设法进行替换,则继续到下一行,-e d删除该行(如果没有IP地址).sort排序.. :)并uniq -c计算连续相同行的实例(由于我们已对它们进行排序,因此对应于总计数).
这里提供的答案都不适合我,所以这是一个有效的答案:
cat yourlogs.txt | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | sort | uniq -c | sort
Run Code Online (Sandbox Code Playgroud)
它使用 grep 来隔离所有 ip。然后对它们进行排序,对它们进行计数,然后再次对结果进行排序。
| 归档时间: |
|
| 查看次数: |
27958 次 |
| 最近记录: |