繁体   English   中英

如何用grep打印出唯一匹配的数量?

[英]How do I print out the count of unique matches with grep?

假设我有数百万个数据包要查看,我想看看数据包被发送到某个端口号的次数。

以下是一些数据包:

10:27:46.227407 IP 85.130.236.26.54156 > 139.91.133.120.60679: tcp 0
10:27:46.337038 IP 211.142.173.14.80 > 139.91.138.125.56163: tcp 0
10:27:46.511241 IP 211.49.224.217.3389 > 139.91.131.47.6973: tcp 0

我想在这里查看第二个端口号,这样:

60679,53163,6973等

所以我可以用:

grep -c '\.80:' output.txt

计算端口80的所有时间。 但有没有办法显示所有使用的端口以及在此文件中找到的端口数。 像这样的东西,也是最好的排序,所以我可以看到最常使用的端口:

.80: - 54513
.110: - 12334
.445: - 412

uniq -c 你需要提取你想要的位,对结果进行排序,通过uniq管道,对输出进行排序。 这样的事情可能是:

egrep '\.[0-9]+:' output.txt | sort | uniq -c | sort -nr

澄清:我在这里使用了grep,因为不清楚你的output.txt格式是什么样的,但是你想要实际删除端口号位,可能是通过cutawk

编辑:要获取端口,您可以在一段时间内剪切一次,然后再在冒号上剪切:

cut -d. -f10 < output.txt | cut -d: -f1

(或者其他任何一种方法来完成同样的事情。)这将为您提供未分类的端口列表。 然后:

cut -d. -f10 < output.txt | cut -d: -f1 | sort | uniq -c | sort -nr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM