我正在做学校项目,我不知道如何用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
答案 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-