Quantas vezes aparece a palavra [RESOLVIDO]

1. Quantas vezes aparece a palavra [RESOLVIDO]

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 24/05/2011 - 17:58h

e ae galera, blz?

Gostaria de saber como contar quantas vezes aparece uma palavra em um determinado texto. Mas preciso fazer isso via linha de comando pois no servidor não tem interface gráfica. Por exemplo quantas vezes aparece a palavra "bruno" dentro do arquivo nomes.txt

valeu!


  


2. sed /grep e wc

Jônatas Ramiro Goulat
jonatas_rg

(usa Fedora)

Enviado em 24/05/2011 - 18:55h

sed/grep e wc :)

se vc garantir que não repete o nome na mesma linha é bem facil :)

grep bruno | wc -l

o grep mostra só as linhas que aparece o nome bruno e o " wc -l" conta a quantidade de linhas


3. grep com wc

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 25/05/2011 - 08:14h

opa,

então, esse jeito usando grep com wc acho que já resolve meu problema, mas se alguém souber como fazer para contar todas ocorrencias da palavra me fala, pois tem casos onde iremos precisar contar até as palavras que se repetem em uma mesma linha.

obrigado =D


4. sed ,grep, wc

Jônatas Ramiro Goulat
Jonatas_rg

(usa Fedora)

Enviado em 25/05/2011 - 08:43h

Nesse caso sed :)

Eu resolveria isso acrescendo um sed para quebrar a linha cada vez que achar uma ocorrência do nome, dessa forma garanto não haver repetição :)

$NOME=bruno
$sed 's/$NOME\b/$NOME\n/g' texto

Pronto, agora é só reutilizar o grep /wc :)

$NOME=bruno
$sed 's/$NOME\b/$NOME\n/g' texto | grep $NOME | wc -l

espero que isso ajude :)




5. não deu

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 25/05/2011 - 09:14h

bruno@Bruno:~/bbb$ NOME=t
bruno@Bruno:~/bbb$ sed 's/$NOME\b/$NOME\n/g' bbb | grep $NOME bbb | wc -l
2

Veja o conteúdo do arquivo bbb:
t t t
t

Deveria retornar 4 e não 2. Errei em alguma etapa?

vlw


6. sed ,grep, wc

Jônatas Ramiro Goulat
Jonatas_rg

(usa Fedora)

Enviado em 25/05/2011 - 09:56h

Eu testei aqui com um nome qualquer, depois alterei para $NOME para ficar mais bonito :D. Acontece que $NOME não funciona dentro de aspas simples ('), só em aspas duplas("). Então tem que alterar o sed para:

sed "s/$NOME\b/$NOME\n/g" bbb

É só aspas, mas faz toda a diferença.

Outro detalhe é grep. Não é pra fazer um grep no arquivo, mas na saido do sed.

sed "s/$NOME\b/$NOME\n/g" bbb | grep "$NOME\b"

Pronto, agora sim funciona e é só contar as linhas :

sed "s/$NOME\b/$NOME\n/g" bbb | grep "$NOME\b" | wc -l


O "\b" no sed e grep é pra se você procurar por MARIA ele não achar MARIAna



7. Agora foi

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 25/05/2011 - 10:37h

Agora sim brother!

bruno@Bruno:~/bbb$ sed "s/$NOME\b/$NOME\n/g" bbb | grep "$NOME\b" | wc -l
4

vlw mano, obrigado.


8. Re: Quantas vezes aparece a palavra [RESOLVIDO]

Júnior
jgrjunior

(usa Debian)

Enviado em 07/01/2012 - 16:20h

Excelente dica essa do "\b" no grep, :D


9. Re: Quantas vezes aparece a palavra [RESOLVIDO]

Paulo
brk0_0

(usa Arch Linux)

Enviado em 07/02/2012 - 23:18h

Porque o caracter $ não funciona como âncora de posição (final de linha) na ultima dica, sendo que não foi usado escape nem nada?

Outra coisa:

$ sed "s/$NOME\b/$NOME\n/g" arquivo 


funciona da mesma maneira que

$ sed "s/\<$NOME\>/\<$NOME\>\n/g" arquivo 


???

Obrigado e abraços!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts