Eu tenho um arquivo de texto contendo tweets e sou obrigado a contar o número de vezes que uma palavra é mencionada no tweet . Por exemplo, o arquivo contém:

Apple iPhone X is going to worth a fortune The iPhone X is Apple"s latest flagship iPhone. How will it pit against it"s competitors? 

E digamos que eu queira contar quantas vezes a palavra iPhone é mencionada no arquivo. Então, aqui está o que eu tentei.

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l 

Certamente funciona, mas estou confuso sobre o comando “wc” no unix. Qual é a diferença se eu tentar algo como:

cut -f 1 Tweet_Data | grep -c "iPhone" 

onde -c é usado ao invés? Ambos produzem resultados diferentes em um grande arquivo cheio de tweets e estou confuso sobre como funciona. Qual método é a maneira correta de contar a ocorrência?

Comentários

Resposta

Dado esse requisito, eu use um GNU grep (para a -o opção ), então passe-o por wc para contar o número total de ocorrências:

$ grep -o -i iphone Tweet_Data | wc -l 3 

Simples grep -c nos dados contará o número de linhas correspondentes, não o número total de palavras correspondentes. Usar a opção -o diz ao grep para gerar cada correspondência em sua própria linha, não importa quantas vezes a correspondência foi encontrada na linha original.

wc -l diz ao utilitário wc para contar o número de linhas. Após o grep colocar cada correspondência em sua própria linha, este é o número total de ocorrências da palavra na entrada.


Se o GNU grep não estiver disponível (ou desejado), você pode transformar o introduza com tr para que cada palavra fique na sua própria linha e, em seguida, utilize grep -c para contar:

$ tr "[:space:]" "[\n*]" < Tweet_Data | grep -i -c iphone 3 

Resposta

O método mais fácil é,

grep -wc "your_text" FileName 

para você, será,

grep -wc "iPhone" Tweet_Data 

Comentários

  • Uma resposta muito clara, entretanto, se você estão combinando uma palavra como ' legal ' você só combinará legal e NÃO ccooll, então esteja ciente de que os espaços ao redor da palavra são importantes. li>
  • O resultado estará incorreto quando a palavra ocorrer mais de uma vez em uma linha.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *