Jai un fichier texte contenant des tweets et je « suis obligé de compter le nombre de fois quun 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. Alors, voici ce que jai essayé.
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
cela fonctionne certainement mais je suis confus au sujet de la commande « wc » sous unix. Quelle est la différence si jessaye quelque chose comme:
cut -f 1 Tweet_Data | grep -c "iPhone"
où -c est utilisé à la place? Les deux donnent des résultats différents dans un gros fichier plein de tweets et je suis confus sur son fonctionnement. Quelle méthode est la bonne façon de compter loccurrence?
Commentaires
Réponse
Étant donné une telle exigence, je voudrais utilisez un grep GNU (pour loption -o
), puis passez-le par wc
pour compter le nombre total doccurrences:
$ grep -o -i iphone Tweet_Data | wc -l 3
Plain grep -c
sur les données comptera le nombre de lignes qui correspondent, pas le nombre total de mots qui correspondent. Lutilisation de loption -o
indique à grep dafficher chaque correspondance sur sa propre ligne, quel que soit le nombre de fois où la correspondance a été trouvée dans la ligne dorigine.
wc -l
indique à lutilitaire wc
de compter le nombre de lignes. Une fois que grep a placé chaque correspondance dans sa propre ligne, il sagit du nombre total doccurrences du mot dans lentrée.
Si GNU grep nest pas disponible (ou souhaité), vous pouvez transformer le saisissez avec tr
pour que chaque mot soit sur sa propre ligne, puis utilisez grep -c
pour compter:
$ tr "[:space:]" "[\n*]" < Tweet_Data | grep -i -c iphone 3
Réponse
La méthode la plus simple est,
grep -wc "your_text" FileName
pour vous, ce sera,
grep -wc "iPhone" Tweet_Data
Commentaires
- Réponse très claire cependant si vous correspondent à un mot comme ' cool ', vous ne trouverez que cool et PAS ccooll, alors sachez que les espaces autour du mot comptent. li>
- Le résultat sera incorrect lorsque le mot apparaît plus dune fois dans une ligne.
cut -f1
coupe en fonction tabs, ce qui ' ne fait pas grand-chose ici. Êtes-vous sûr quewc -l
vous donne vraiment le décompte correct? Il en afficherait 2 ici, mais je compte 3 instances de " iPhone ".