Jai créé un fichier texte avec 1000 lettres majuscules et minuscules aléatoires:
cat /dev/urandom | tr -dc "a-zA-Z0-9" | head -c 1000 > file1
Combien de fois le mot « chat » apparaît-il dans ce fichier, en utilisant grep
et wc
?
Je lai fait de cette façon:
grep -ic cat file1
Mais il compte les lignes dans lesquelles il apparaît, alors que je veux vérifier combien fois quil apparaît dans cette ligne. Une idée?
Commentaires
- fyi, tr peut utiliser [: alnum:] au lieu de az .. . Et vous voulez compter combien de fois il apparaît dans tout le fichier, pas seulement sur chaque ligne, ou sur une seule ligne particulière (vous avez dit " dans cette ligne " à la fin)?
Réponse
Le travail que je dois faire est de trouver combien de fois dans ce fichier apparaît le monde « chat » en utilisant la commande
grep
etwc
.
Essayez:
grep -oi cat file1 | wc -l
Exemple:
$ cat file1 foo cat bar zoo cat random text cat dog foobar cat end!
^ Nous avons quatre occurrences de cat
ci-dessus.
grep -oi cat file1 | wc -l 4
De man grep
(je souligne):
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
Commentaires
- La commande ci-dessus trouvera toutes les sous-chaînes cat même si elles en font partie dautres mots comme bob chat et chat alougue. Mais le fichier est créé de manière à ne contenir aucun espace, aucun mot de frein ni aucun saut de ligne. Cest donc juste une note.
- @schweik Oui, cest vrai. Je nai ajouté aucune limite de mot à ma réponse.