【问题标题】:Unique count and sort of a stream of data for a period of time一段时间内数据流的唯一计数和排序
【发布时间】:2018-01-29 02:06:06
【问题描述】:

我想从直播流中排序/获取特定时间段的唯一计数:

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

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

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

【问题讨论】:

    标签: linux bash awk uniq


    【解决方案1】:

    您能否尝试关注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)]}
    }'
    

    【讨论】:

    • 这不显示每个唯一报告的计数。它只是显示独特项目的数量
    • @Kousha,请发布您的命令输出,然后我可以相应地调整我的代码,否则很难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多