No momento em que escrevo esta pergunta, minha melhor solução é esta:
… | { for i in 1 2 3; do read -r i; printf ' %s\n' "$i"; done;
sort | uniq -c | sort -n; }
Assim, a saída é canalizada para um grupo que lê três linhas e as imprime recuadas por 8 espaços (que aparece como a quantidade de espaço usada por uniq -c
para manter a contagem e separação de espaço) e o restante da entrada para esse grupo é encaminhado para sort
e uniq
.
Eu acho que eu poderia escrever o acima como um script de shell em algum lugar, talvez com o número de linhas como argumento, então eu não tenho que redigitar isso para cada uso.