O seguinte fará o que você quiser ... embora haja muitas outras maneiras de conseguir isso ... por exemplo, com gawk
, de acordo com a resposta de Kamil.
- O primeiro
sort
solicitará os dados por dados de linha -
uniq -c
contará o número de ocorrências correspondentes (elas devem ser vizinhas) -
sort -nr
classificará pelo número de ocorrências, na ordem inversa - O loop
while
itera em cada linha-
read n l
ingerirá a contagem emn
e os dados da linha eml
-
- O loop
for
iteran
times -
echo "${l}"
gera os dados da linha
(
sort \
| uniq -c \
| sort -nr \
| while read n l; do \
for i in $(seq ${n}); do \
echo "${l}"; \
done; \
done
) <<"EOF"
a
b
b
b
b
c
c
d
d
d
EOF