#! /usr/bin/gawk -f # usage: count-word-freqs < WORDFILE > FREQFILE # Input must have one word per line # Empty lines are ignored BEGIN { n = 0; split("", xn); } function tally(x, xn) { n++; if (!(x in xn)) { xn[x] = 1 } else { xn[x]++ } } function ptable(t, xt) { printf "%s", dig; for(x in xt) { printf "%5d %5.3f %s\n", xt[x], (xt[x]/n), x; } printf "\n"; printf "%5d %5.3f %s\n", n, 1.0, "TOT" } /./ { tally($0, xn) } /^$/ { next; } END { ptable(n, xn) exit 0; }