Tem pelo menos 3 formas: 1- usando uniq -c $ uniq -c arq.txt # se ja estiver ordenado! 4 linux 2 shell
$ sort arq.txt | uniq -c # ordenando... 4 linux 2 shell 2- pode usar o grep -c para uma palavra em específico $ grep -c linux arq.txt 4 3- podes usar awk + arrays $awk '{words[$0]++} END{for(i in words) print i,"-",words[i] }' arq.txt linux - 4 shell - 2 Acho que a sort + uniq é a melhor opção, basta formatar a saída do jeito que vc quiser, usando sed ou awk []´s Tiago On 9/20/07, gleissonmb <[EMAIL PROTECTED]> wrote: > > > Boa tarde gente, > > Alguma dica de como contar quantas ocorrencias de uma string existe em > um arquivo linha por linha. > > Ex: > > conteudo de arq.txt > linux > linux > linux > linux > shell > shell > > O resultado ideal do comando seria: > linux - 4 > shell - 2 > > Eu tentei este comando: > # for i in `cat arq.txt` ; do echo -ne "$i"\ ; echo -ne "-"\ ; grep > "^$i$" arq.txt | wc -l ; echo ; done > > Só que aparece repetido, assim: > linux - 4 > linux - 4 > linux - 4 > linux - 4 > shell - 2 > shell - 2 > > !!! > > > -- Tiago B Peczenyj Linux User #405772 http://peczenyj.blogspot.com/ [As partes desta mensagem que não continham texto foram removidas]