最佳答案
我有一个包含 IP 地址和端口的大文件(数百万行) ,这些 IP 地址和端口来自于几个小时的网络捕获,每行一个 IP/port。行的格式如下:
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
我不知道如何用 sort 聚合行计数。