Multiple grep en un seul ? [Résolu/Fermé]

Signaler
-
 mortelrdv -
bonjour,

Pour trouver un ou multiple lignes contenant les info que je veux, je fais :
grep "info1" nom_fichier | grep "info2" | grep "info3" | fgrep "info4"

Je me demandais s'il existe un moyen genre :
grep "info1" "info2" "info3" "info4" nom_fichier

Merci

9 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 836
Salut,

egrep "info1|info2|info3|info4" nom_fichier
13
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
466
Salut,

ou bien

grep -i -e pattern1 -e pattern2 -e patern3 ton_fichier


ou bien

grep -E "pattern1|pattern2|pattern3" ton_fichier



^ ^

un penguin sur la banquise !
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 836
grep "info1.*info2.*info3.*info4" 
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
466
ou bien ceci

egrep -w 'pattern1|pattern2|pattern3|pattern4' ton_fichier


grep -E 'pattern1|pattern2|pattern3|pattern4' ton_fichier


?

remarque : les patterns doivent être dans l'ordre d'apparition sinon ... ça l'fait pas !

un penguin sur la banquise !
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 836
Extrait de "info grep" :

10. I can do OR with '|', but what about AND?

          grep 'paul' /etc/motd | grep 'françois'

     finds all lines that contain both 'paul' and 'françois'


Donc ta solution de départ était la bonne ;-))
à jipicy & bob031
vos solutions donnent "cherche une ligne contenant info1 ou une ligne contenant info2 ou une ligne ...."

je cherche plutot "cherche une ligne contenant info1 et info2 et info3 ..."

PS: j'utilise GNU grep 2.5.4
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
466
peut-être ceci :

grep -E "(pattern1|pattern2|pattern3)" ton_fichier


un penguin sur la banquise !
non ça ne marche pas
Merci

Je pensais qu'il y aurait une solution plus 'jolie'