Conteggio delle occorrenze di parole nel file di testo


31

Ho un file di testo contenente tweet e sono tenuto a contare il numero di volte in cui una parola viene menzionata nel tweet. Ad esempio, il file contiene:

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 diciamo che voglio contare quante volte la parola iPhone è menzionata nel file. Quindi ecco cosa ho provato.

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

certamente funziona ma sono confuso riguardo al comando 'wc' in unix. Qual è la differenza se provo qualcosa del genere:

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

dove viene usato -c invece? Entrambi producono risultati diversi in un file di grandi dimensioni pieno di tweet e sono confuso su come funziona. Quale metodo è il modo corretto di contare l'occorrenza?


cut -f1sta tagliando in base alle schede, che qui non sta facendo molto. Sei sicuro che ti wc -lstia davvero dando il conto corretto? Mostrerebbe 2 qui, ma conto 3 istanze di "iPhone".
Jeff Schaller


Risposte:


54

Dato tale requisito, utilizzerei un grep GNU (per l' -oopzione ), quindi lo passerei attraverso wcper contare il numero totale di occorrenze:

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

Il semplice dato grep -csui dati conterà il numero di righe corrispondenti, non il numero totale di parole corrispondenti. L'uso -odell'opzione dice a grep di produrre ogni partita sulla sua linea, indipendentemente da quante volte la partita è nella linea.

wc -lindica wcall'utilità di contare il numero di righe. Dopo che grep inserisce ogni corrispondenza nella propria riga, questo è il numero totale di occorrenze della parola nell'input.


Se GNU grep non è disponibile (o desiderato), è possibile trasformare l'input in trmodo che ogni parola si trovi sulla propria riga, quindi utilizzare grep -cper contare:

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

1

Il metodo più semplice è,

grep -wc "your_text" FileName

per te sarà

grep -wc "iPhone" Tweet_Data

Risposta molto chiara, tuttavia, se stai abbinando una parola come "cool", abbinerai solo cool e NON ccooll, quindi tieni presente che gli spazi intorno alla parola contano.
Jasonleonhard,

1
Il risultato sarà errato quando la parola appare più di una volta in una riga.
hek2mgl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.