5 ms·
You can skip `tr` as well - works on BSD awk and GNU awk. { $0 = tolower($0) gsub(/[^[:alpha:]]/, "\n") for (i = 1; i <= NF; i++) {
by sgarland 9d ago
You can skip `tr` as well - works on BSD awk and GNU awk.
{
$0 = tolower($0)
gsub(/[^[:alpha:]]/, "\n")
for (i = 1; i <= NF; i++) {
if (!($i in freq)) order[++n] = $i
freq[$i]++
}
} END {
for (i = 1; i <= n; i++)
printf "%d %s\n", freq[order[i]], order[i]
}