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

标签 linux bash awk uniq

我想对特定时间段内的直播流进行排序/获取唯一计数:

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/

相关文章:

linux - 在 shell 脚本中从另一个字符串中剪切并删除一个字符串

bash - Bash 命令日期的 -d 选项格式

linux - 计算用户登录 Linux 的时间的简单方法

linux - 在 Perl 脚本中使用 Bash 环境变量?

linux - 匹配多列并打印二进制结果

linux - 将一个文件(保持行顺序)与 "static"文件进行比较

awk - 计算连续点的距离

php - linux 文件大小

linux - 需要脚本或软件一次修改很多html文件

linux - CentOS 7's vim can' 无法打开帮助(以 root 身份运行时),因为它无法处理 gzip 压缩的帮助文件