从文件绘制直方图

时间:2019-03-29 17:21:44

标签: bash awk histogram

我正在做学校项目,我不知道如何用AWK绘制直方图。

这就是我需要的:

变量1(8):########
Variable2(4):####
Variable3(2):##
Variable4(2):##
Variable5(2):##
Variable6(1):#
Variable7(1):#
Variable8(1):#

awk '{n[$1]++} END {for (i in n) print i,"("n[i]"):"} file | sort -n

变量1(8):
Variable2(4):
Variable3(2):
Variable4(2):
Variable5(2):
Variable6(1):
Variable7(1):
Variable8(1):

所以我需要添加 #s

2 个答案:

答案 0 :(得分:1)

另一个awk。在缺乏适当的样本数据的情况下,例如使用数字:

$ cat file
8
4
...

糟糕:

$ awk '{h=sprintf("%0" $1 "d",0);gsub(/0/,"#",h);print $1,h}' file

输出:

8 ########
4 ####
2 ##
2 ##
2 ##
1 #
1 #
1 #

解释:

$ awk '{
    h=sprintf("%0" $1 "d",0)  # use 0s for the histogram chars
    gsub(/0/,"#",h)           # replace with #s
    print $1,h                # output
}' file

答案 1 :(得分:1)

awk '
    { n[$1]++ }
    END {
        for (i in n) {
            bar = sprintf("%*s",n[i],"")
            gsub(/ /,"#",bar)
            printf "%d\t%s (%d): %s\n", n[i], i, n[i], bar
        }
    }
' file | sort -rn | cut -f2-