Conte quantas vezes cada linha aparece em um arquivo

21

Digamos que eu tenha um arquivo que contenha:

A
A
A
B
CC

Eu quero ter a saída assim:

A 3
B 1
CC 1
    
por Cheng 07.01.2011 / 04:03

2 respostas

22

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

$ uniq -c
    
por 07.01.2011 / 04:05
16

Eu acabei de vir aqui com um problema semelhante. A partir disso, consegui reunir um comando um pouco mais avançado, que espero ser útil para os 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 únicas e classificamos novamente, de modo que as linhas mais comuns estejam no topo.

sort file.txt | uniq -c | sort -nr > output.txt

A saída é redirecionada para o arquivo output.txt . Se você quiser apenas ver os resultados na linha de comando, remova o redirecionamento e altere o último comando para sort -n para que a linha mais comum esteja na parte inferior, ou seja, definitivamente ainda na tela.

    
por 07.03.2011 / 21:40