Digamos que eu tenha um arquivo que contenha:
A
A
A
B
CC
Eu quero ter a saída como esta:
A 3
B 1
CC 1
Eu descobri; uma das opções de uniq
é -c
, para "linhas de prefixo pelo número de ocorrências":
$ uniq -c
Eu só vim aqui com um problema semelhante. A partir disso, consegui montar um comando um pouco mais avançado, que espero que seja útil para outros.
Como Steven D disse nos comentários acima uniq
conta apenas linhas de repetição adjacentes, então você precisa classificar as linhas primeiro. Depois disso, encontramos as linhas exclusivas e, em seguida, classificamos novamente, para que as linhas mais ocorrentes estejam no topo.
sort file.txt | uniq -c | sort -nr > output.txt
A saída é redirecionada para o arquivo output.txt
. Se você deseja apenas exibir resultados na linha de comando, remova o redirecionamento e altere o último comando para sort -n
para que a linha mais comum fique na parte inferior, ou seja, definitivamente ainda esteja na tela.