Pages : 1
#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 ?
May linux be with you
Comment poster un message.
Je me présente dans la doc
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...
May linux be with you
Comment poster un message.
Je me présente dans la doc
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]
@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 ....
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
Pages : 1