7.15. Wyświetlanie danych w formie histogramu
Problem
Chcemy szybko przygotować tekstową wersję histogramu pewnych danych.
Rozwiązanie
Należy wykorzystać mechanizm tablic asocjacyjnych awk
, opisany w poprzedniej recepturze:
# # plik receptury: hist.awk # function max(arr, big) { big = 0; for (i in user) { if (user[i] > big) { big=user[i];} } return big } NF > 7 { user[$3]++ } END { # skalowanie maxm = max(user); for (i in user) { #printf "liczba plików użytkownika %s: %d\n", i, user[i] scaled = 60 * user[i] / maxm ; printf "%-10.10s [%8d]:", i, user[i] for (i=0; i<scaled; i++) { printf "#"; } printf "\n"; } }
Dane wejściowe dla skryptu są takie same, jak w poprzedniej recepturze:
$ ls -lR /usr/local | awk -f hist.awk apache [ 237]:########## marek [ ...
Get Bash. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.