Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/08/2010, à 11:53

jehaane

Grep [resolu]

Bonjour ,

Savez vous comment vérifier la présence de deux motifs différents dans un fichier ?
j'ai essayé avec (motif1|motif2) comme le montre la commande suivante , mais la "|" est un OU et pas un AND
if ( cat test.txt  | egrep -w (motif1|motif2) ; then
echo "ok"
fi
des idées ?

Dernière modification par jehaane (Le 12/08/2010, à 12:56)

Hors ligne

#2 Le 12/08/2010, à 12:05

fabux

Re : Grep [resolu]

Salut,

pas devant pour tester, mais si tu pipe 2 fois: cat test.txt | egrep -w motif1 | egrep -w motif2 par exemple ?

Hors ligne

#3 Le 12/08/2010, à 12:21

Totor

Re : Grep [resolu]

Bonjour,

Je suppose que les 2 motifs doivent se trouver sur la même ligne (sinon tu afficherais le nom du fichier et non les occurrences correspondantes) ?

awk ' /motif1/ && /motif2/' fichier.txt


Note : le "cat" n'est absolument pas utile --> grep sait très bien lire un fichier par lui même.


-- Lucid Lynx --

Hors ligne

#4 Le 12/08/2010, à 12:55

jehaane

Re : Grep [resolu]

La solution de fabux est celle qui me convient le plus ..
merci pour vous deux

Hors ligne

#5 Le 12/08/2010, à 13:29

fabux

Re : Grep [resolu]

Je penses que le traitement de Totor en plus d'être plus propre (usage d'un seul outil face à 1 cat 2 pipe et 2 egrep) doit être plus rapide.
Mais bon si ça te va...

Hors ligne

#6 Le 12/08/2010, à 22:21

AnsuzPeorth

Re : Grep [resolu]

Bjr,
grep fonctionne parfaitement pour cela aussi !

grep "motif\|motif1" fichier
egrep "(motif|motif1)" fichier

donc:

grep -q "motif\|motif1" fichier && echo ok

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 13/08/2010, à 08:11

Totor

Re : Grep [resolu]

@AnsuzPeorth : non, ceci permet de sélectionner les lignes contenant l'un des 2 motifs, mais pas les 2 en même temps.
cela dit, il est effectivement possible de le faire avec grep en une seule fois :

egrep -q "motif1.*motif2|motif2.*motif1" fichier && echo ok

-- Lucid Lynx --

Hors ligne

#8 Le 13/08/2010, à 10:46

Postmortem

Re : Grep [resolu]

Et si on veut vérifier la présence des motifs en tant que mots, c'est à dire que la ligne suivante ne sera pas matchée :

dfqfdmotif1 qseff motif2

alors que la ligne suivante le sera :

dfqds motif1 dsf motif2

grep -q -e "\<motif1\>.*\<motif2\>" -e "\<motif2\>.*\<motif1\>" fichier && echo ok

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#9 Le 13/08/2010, à 11:07

AnsuzPeorth

Re : Grep [resolu]

Totor a écrit :

@AnsuzPeorth : non, ceci permet de sélectionner les lignes contenant l'un des 2 motifs, mais pas les 2 en même temps.

désolé, je n'avais pas bien lu l'énoncé du problème, comme à l'école .... smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne