我想对特定时间段内的直播流进行排序/获取唯一计数:
some-stream | sort | uniq -c | sort -nr
比如这里的some-stream
可以是tcpdump -i any | awk '{print $3}'
为您提供 IP 列表。
是否可以随着流的实时更新不断更新唯一计数?
最佳答案
能否请您尝试使用 awk
,如果这对您有帮助,请告诉我。
解决方案 1: 获取服务器名称第 3 列的所有值(如果您在第 3 列中有 IP,我们也可以在解决方案中更改正则表达式)
tcpdump -i any |stdbuf -oL awk '$3 ~ /\.com/{match($3,/.*\.com/);print substr($3,RSTART,RLENGTH)}'
解决方案 2: 获取以下唯一服务器列表可能对您有帮助:
tcpdump -i any |stdbuf -oL awk '$3 ~ /\.com/{match($3,/.*\.com/);if(!a[substr($3,RSTART,RLENGTH)]++){print substr($3,RSTART,RLENGTH);a[substr($3,RSTART,RLENGTH)]}}'
或
tcpdump -i any |
stdbuf -oL awk '$3 ~ /\.com/{
match($3,/.*\.com/);
if(!a[substr($3,RSTART,RLENGTH)]++){
print substr($3,RSTART,RLENGTH);
a[substr($3,RSTART,RLENGTH)]}
}'
关于linux - 一段时间内数据流的唯一计数和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493421/