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

Unique count and sort of a stream of data for a period of time

我想 sort/get 在特定时间段内从直播流中获取唯一计数:

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

例如,这里的some-stream可以是tcpdump -i any | awk '{print }'给你IP列表。

是否可以随着流的实时更新不断更新唯一计数?

能否请您尝试关注 awk 如果这对您有帮助,请告诉我。

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

tcpdump -i any |stdbuf -oL  awk ' ~ /\.com/{match(,/.*\.com/);print substr(,RSTART,RLENGTH)}'

解决方案 2: 要获取唯一服务器列表,以下可能对您有帮助:

tcpdump -i any |stdbuf -oL  awk ' ~ /\.com/{match(,/.*\.com/);if(!a[substr(,RSTART,RLENGTH)]++){print substr(,RSTART,RLENGTH);a[substr(,RSTART,RLENGTH)]}}'

tcpdump -i any |
stdbuf -oL  awk ' ~ /\.com/{
                               match(,/.*\.com/);
                               if(!a[substr(,RSTART,RLENGTH)]++){
                               print substr(,RSTART,RLENGTH);
                               a[substr(,RSTART,RLENGTH)]}
}'