一段时间内唯一的数据流排序和排序

时间:2018-01-29 02:06:07

标签: linux bash awk uniq

我想在一段时间内从实时流中排序/获取唯一计数:

some-stream | sort | uniq -c | sort -nr

例如,some-stream此处可以tcpdump -i any | awk '{print $3}'为您提供IP列表。

当流实时更新时,是否可以不断更新唯一计数?

1 个答案:

答案 0 :(得分:0)

您能否请关注awk并告诉我这是否对您有所帮助。

解决方案1: 要获取第3列服务器名称的所有值(如果您在第3列中有IP,我们也可以在解决方案中更改正则表达式)

tcpdump -i any |stdbuf -oL  awk '$3 ~ /\.com/{match($3,/.*\.com/);print 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)]}}'

<强> OR

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)]}
}'