August 2012
Intermediate to advanced
624 pages
17h 11m
Polish
Chcemy szybko przygotować tekstową wersję histogramu pewnych danych.
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 [ ...Read now
Unlock full access