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
text-processing
Cheng
fonte
fonte
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
sort | uniq
A \ A \ A \ B \ A \ CC
, a saída de justuniq -c
seria mostradaA 3
e mais tarde mostradaA 1
. Classificando primeiro, irá garantir todas as linhas idênticas são agrupadosEu 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 as 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.A saída é redirecionada para o arquivo
output.txt
. Se você quiser apenas exibir os resultados na linha de comando, remova o redirecionamento e altere o último comando parasort -n
que a linha mais comum fique na parte inferior, ou seja, definitivamente ainda esteja na tela.fonte
cat file.txt | sort
com apenassort file.txt
. :)cat
item por algo mais interessante. Desde que, você sabe, não hácat
.< file.txt sort | uniq -c
. Isso é fácil de editar e ainda evita o desnecessáriocat
.