2011-02-03 3 views
27

Qu'est-ce qu'un moyen facile de compter le nombre de fois qu'un mot apparaît dans un fichier?Commande Linux, quel est un moyen facile de compter le nombre de fois qu'un mot apparaît dans un fichier?

+1

Comment définissez-vous «mot»? Est-ce juste une chaîne, ou une chaîne entourée d'espaces, une chaîne entourée d'un ensemble de caractères? Quels personnages peuvent-ils être? – abesto

+0

une chaîne de 48 caractères, pas d'espace et pas de caractères spéciaux autres que les caractères ascii – magqq

Répondre

75

Cela permettra également compter plusieurs occurrences du mot dans une seule ligne:

grep -o 'word' filename | wc -l 
+0

Ahh, le '-o' fait la magie. Belle réponse, jamais su cela. Pas plus upvotes aujourd'hui si :( –

+0

passé le test, pourquoi chat le fichier, puis il compte le mot multiple sur la même ligne? – magqq

+0

la raison pour laquelle je veux savoir est pour la performance depuis que nous avons de gros fichiers journaux beaucoup d'entre eux à compter ces jsession id, très douloureux, besoin de compter ceux rapides, mais bien fait, jusqu'à présent j'aime celui-ci le meilleur, thx mohit6up! – magqq

4

grep -c mot de fichier

si vous voulez insensible à la casse, utilisez grep -ique

+1

Cela ne tient pas compte des occurrences multiples du même mot sur une ligne. – nc3b

+0

Point intéressant. Vous pourriez mentionner que c'est pourquoi vous utilisez tr dans votre réponse. –

2
cat filename | tr ' ' '\n' | grep 'word' | wc -l 
-1
fgrep "word to be counted" filename|wc -w 
+0

Bien que ce code puisse répondre à la question, en fournissant un contexte supplémentaire concernant la façon et/ou pourquoi il résout le problème permettrait d'améliorer la valeur à long terme de la réponse. – Badacadabra

Questions connexes