Usando tr
, sort
e uniq
:
$ tr -s ' ' '\n' <file | sort | uniq -c
1
17 1
5 11
1 111
2 11111
1 1111111
1 11111111
Isso lhe dá uma contagem de uma linha vazia (a primeira linha na saída acima), mas você pode evitar isso com sed
:
$ tr -s ' ' '\n' <file | sed '/^$/d' | sort | uniq -c
17 1
5 11
1 111
2 11111
1 1111111
1 11111111
O pipeline altera todos os espaços para novas linhas, classifica as linhas resultantes e conta o número de ocorrências de cada linha.