it-swarm-pt.com

Contar quantas vezes cada linha aparece em um arquivo

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
24
Cheng

Eu descobri; uma das opções de uniq é -c, para "linhas de prefixo pelo número de ocorrências":

$ uniq -c
25
Cheng

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.

16
DisgruntledGoat