一段时间内数据流的唯一计数和排序
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)]}
}'
我想 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)]}
}'