Рисование гистограммы из файла - PullRequest
0 голосов
/ 29 марта 2019

Я работаю над школьным проектом и не знаю, как нарисовать гистограмму с помощью AWK.

это то, что мне нужно:

Variable1 (8): ########
Переменная2 (4): ####
Переменная3 (2): ##
Переменная4 (2): ##
Переменная5 (2): ##
Переменная6 (1): #
Переменная7 (1): #
Переменная8 (1): #

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

Переменная1 (8):
Переменная2 (4):
Переменная3 (2):
Переменная4 (2):
Переменная5 (2):
Переменная6 (1):
Переменная7 (1):
Переменная8 (1):

, поэтому мне нужнодобавить # с

Ответы [ 2 ]

1 голос
/ 29 марта 2019
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-
1 голос
/ 29 марта 2019

Еще один в awk. В отсутствие надлежащих выборочных данных используются числа как таковые:

$ cat file
8
4
...

Awk:

$ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...