情况:
我有一个大文件(数百万行),其中包含来自几个小时网络捕获的IP地址和端口,每行一个ip /端口。行的格式如下:
ip.ad.dre.ss[:port]
所需结果:
我在记录日志时收到的每个数据包都有一个条目,因此有很多重复的地址。我希望能够通过某种shell脚本运行该脚本,从而可以将其简化为以下格式的行
ip.ad.dre.ss[:port] count
其中count
,该特定地址(和端口)的出现次数。无需执行任何特殊工作,将不同的端口视为不同的地址。
到目前为止,我正在使用此命令从日志文件中抓取所有IP地址:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
由此,我可以使用一个相当简单的正则表达式来抓取我的地址发送的所有IP地址(我不在乎)
然后,我可以使用以下内容提取唯一条目:
sort -u ips.txt > intermediate.txt
我不知道如何以某种方式汇总行数。
-bgr
巧合地看起来像的助记符bigger
,这就是我们想要的顶部。