Compter le nombre d'occurences d'un mot dans un fichier ?

Résolu/Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - Modifié par Swiss Knight le 13/12/2012 à 14:11
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 13 déc. 2012 à 16:44
Salut,
j'ai une petite question apparemment toute simple :

pour compter le nombre de lignes contenant un mot on fait un
$ grep -i "pattern" filename | wc -l


mais si on a un fichier qui contient des milliers de caractères sur une (ou plusieurs) ligne(s) et qu'on aimerait chercher notre "pattern" dans ce fichier, comment fait-on ? (il se peut que "pattern" ait des espaces).

Merci.
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
13 déc. 2012 à 14:12
hello
avec l'option -o
$ echo " a b c a d a" | grep -o "a" | wc -l
3
$ 
8
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
Modifié par Swiss Knight le 13/12/2012 à 14:40
Super, merci. ;)

Encore une option qui est passée trop vite sous ma molette :-(

Je profite encore de demander si quelqu'un a une idée pour attraper du code html avec grep.

Exemple :

<balise = "chaine">  
pattern text 
 </fin balise>


Je souhaite que l'intégralité de ce bout de code soit en fait le pattern de recherche de grep :
$ grep -i "<balise = "chaine"> pattern text </fin balise>"


Mais ça ça ne marche pas. Évidemment.
Mes trois questions à ce sujet sont donc :
- les sauts de ligne ? c'est \n pour grep ? J'ai pas l'impression... :S
- il y a des guillemets doubles dans la balise ; c'est correct de les échapper comme ça : \"
- le slash ( / ) j'ai rien besoin d'en faire, i.e. ce n'est pas un caractère spécial dans ce cas ?


Encore merci ! ;)

"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
13 déc. 2012 à 15:41
essayer
$ cat a3
aaa
bbb
<balise = "chaine">  
pattern text 
 </fin balise>
ccc
ddd
$ grep -P '(?s)<balise = "chaine">.*?</fin balise>' a3
<balise = "chaine">  
pattern text 
 </fin balise>
$ 
0
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
13 déc. 2012 à 16:44
Ça a l'air de bien fonctionner merci beaucoup ;-)
Je coche le message comme résolu (bien qu'il me viennent encore des questions à la pelle !)

0