Eu usaria grep
com -o
para imprimir apenas a parte superior da string correspondente extrair as palavras:
$ for file in *; do
printf '%s : %s\n' "$(grep -Eo '[[:alnum:]]+' "$file" | sort | uniq -c |
sort -rn | head -n1)" "$file"
done
8 no : file1
10 so : file2
12 in : file3
Como alternativa, se o grep
não der suporte a -o
, você poderá usar tr
para substituir todos os caracteres de espaço em branco e pontuação por \n
, filtrar por grep .
para pular linhas em branco e contar:
$ for file in *; do
printf '%s : %s\n' "$(tr '[[:punct:]][[:space:]]' '\n' < "$file" | grep . |
sort | uniq -c | sort -rn | head -n1)" "$file"
done
8 no : file1
10 so : file2
12 in : file3