web-dev-qa-db-fra.com

Compter les occurrences de Word dans un fichier texte

J'ai un fichier texte contenant des tweets et je dois compter le nombre de fois qu'un mot est mentionné dans le Tweet. Par exemple, le fichier contient:

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?

Et disons que je veux compter combien de fois l'iPhone Word est mentionné dans le fichier. Voici donc ce que j'ai essayé.

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

cela fonctionne certainement, mais je suis confus à propos de la commande "wc" sous unix. Quelle est la différence si j'essaye quelque chose comme:

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

où -c est utilisé à la place? Ces deux résultats différents dans un fichier volumineux plein de tweets et je suis confus sur la façon dont cela fonctionne. Quelle méthode est la bonne façon de compter l'occurrence?

34
Maxxx

Étant donné une telle exigence, j'utiliserais un GNU grep (pour l'option -o ), puis passez-le par wc pour compter le nombre total d'occurrences:

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

Un simple grep -c Sur les données comptera le nombre de lignes qui correspondent, pas le nombre total de mots qui correspondent. L'utilisation de l'option -o Indique à grep de sortir chaque correspondance sur sa ligne, quel que soit le nombre de fois que la correspondance est sur la ligne.

wc -l Indique à l'utilitaire wc de compter le nombre de lignes. Après que grep ait placé chaque correspondance dans sa propre ligne, il s'agit du nombre total d'occurrences du mot dans l'entrée.


Si GNU grep n'est pas disponible (ou souhaité), vous pouvez transformer l'entrée avec tr pour que chaque mot soit sur sa propre ligne, puis utilisez grep -c compter:

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

La méthode la plus simple est,

grep -wc "your_text" FileName

pour vous ce sera,

grep -wc "iPhone" Tweet_Data
2
Silent Spectator