按范围过滤 grep 结果并显示在列中

Fillter grep results by range and display in column

我已经使用 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

我用 awk uniq 做了一些测试和研究......但我没有得到结果

谢谢!

awk '
    {days[] = 1}
     <= 4 {a[]++} 
    4 <  &&  < 8 {b[]++} 
     >= 8 {c[]++} 
    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