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 le mot iPhone 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 grand fichier 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?
text-processing
grep
cut
Maxxx
la source
la source
cut -f1
coupe en fonction des onglets, ce qui ne fait pas grand-chose ici. Êtes-vous sûr quewc -l
cela vous donne vraiment le bon nombre? Il en afficherait 2 ici, mais je compte 3 instances de "iPhone".Réponses:
Étant donné une telle exigence, j'utiliserais un grep GNU (pour l'
-o
option ), puis le passeraiswc
pour compter le nombre total d'occurrences:En clair
grep -c
, les données compteront le nombre de lignes qui correspondent, pas le nombre total de mots qui correspondent. L'utilisation de l'-o
option 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'wc
utilitaire 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 utilisezgrep -c
pour compter:la source
La méthode la plus simple est,
pour toi ce sera,
la source