【问题标题】:Fillter grep results by range and display in column按范围过滤 grep 结果并在列中显示
【发布时间】:2015-04-02 13:42:35
【问题描述】:

我已经用grep 从我的日志统计、数据和值中提取了这些数据:

Apr-1 -4
Apr-1 -2
Apr-1 -5
Apr-1 5
Apr-1 95
Apr-2 -4
Apr-2 -6
Apr-2 -8
Apr-2 9

我需要按 range: <=4 显示计数,从 >4 to <8>= 8 开始,然后在列中按天显示组。像这样:

Day      <=4     >4 & <8    >= 8
--------------------------------
Apr-1     3         1         1
Apr-2     3         0         1

我对@9​​87654327@ 进行了一些测试和研究...但没有得到任何结果

谢谢!

【问题讨论】:

    标签: awk sed grep uniq


    【解决方案1】:
    awk '
        {days[$1] = 1}
        $2 <= 4 {a[$1]++} 
        4 < $2 && $2 < 8 {b[$1]++} 
        $2 >= 8 {c[$1]++} 
        END {
            OFS="\t"; 
            print "Day","<=4", "4<x<8", ">=8"; 
            PROCINFO["sorted_in"] = "@ind_str_asc"; 
            for (day in days) 
                print day, a[day]+0, b[day]+0, c[day]+0
        }
    ' <<END | column -t 
    Apr-1 -4
    Apr-1 -2
    Apr-1 -5
    Apr-1 5
    Apr-1 95
    Apr-2 -4
    Apr-2 -6
    Apr-2 -8
    Apr-2 9
    END
    
    Day    <=4  4<x<8  >=8
    Apr-1  3    1      1
    Apr-2  3    0      1
    

    打印时将值加零的原因是空值(例如 Apr-2 4

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多