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
5 décembre 2019
4 757
Salut,

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

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

CCM 57086 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
462
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
5 décembre 2019
4 757
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
462
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
5 décembre 2019
4 757
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
462
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'