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? Ambos produzem resultados diferentes em um arquivo grande cheio de tweets e estou confuso sobre como ele funciona. Qual método é a maneira correta de contar a ocorrência?
text-processing
grep
cut
Maxxx
fonte
fonte
cut -f1
está cortando com base em guias, o que não está fazendo muito aqui. Tem certeza de quewc -l
realmente está lhe dando a contagem correta? Seria mostrado 2 aqui, mas conto 3 instâncias do "iPhone".Respostas:
Dado esse requisito, eu usaria um grep GNU (para a
-o
opção ) e depois passariawc
para contar o número total de ocorrências:Os
grep -c
dados simples contarão o número de linhas correspondentes, não o número total de palavras correspondentes. O uso da-o
opção informa ao grep para gerar cada correspondência on-line, não importa quantas vezes a correspondência esteja na linha.wc -l
diz aowc
utilitário para contar o número de linhas. Depois que o grep coloca 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ê poderá transformar a entrada
tr
para que cada palavra fique em sua própria linha e usegrep -c
para contar:fonte
O método mais fácil é,
para você será,
fonte