Egrep - Exclure la commande grep elle-même

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - Modifié par Jeff le 7/10/2010 à 11:59
 Utilisateur anonyme - 7 oct. 2010 à 22:25
Bonjour,

bon je n'arrive pas a trouvé la bonne syntaxe avec egrep

Mon but est de récupérer les lignes contenant openerp-*.py suite a la commande
ps -ef
donc j'ai fait :

ps -ef | egrep 'openerp.*py' | tr -s " " "|" | cut -d "|" -f9 > fichier


Mon souci c'est que cela ma récupérer également l'openerp de ma commande egrep et je ne souhaite pas puisque c'est pour vérifier si j'ai des proccess openerp actifs qui tournent.

Comment puis je faire pour récupérer les process sans celui de ma commande egrep?

Merci




L'accès au savoir est la première liberté que chaque homme devrait avoir.

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 oct. 2010 à 10:17
Salut,

ps -ef | egrep 'o[p]enerp.*py' | tr -s " " "|" | cut -d "|" -f9

;-))
0
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
7 oct. 2010 à 10:24
Juste pour comprendre, en quoi le fait de préciser [p] élimine le openerp présent dans la commande ps ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 oct. 2010 à 10:54
Salut,

Ta question c'est plutôt : en quoi le fait de préciser [p] élimine le openerp présent dans la commande grep ?
Et non dans la commande "ps" ;-))

Pour simplifier j'ai enlevé l'astérisque (quantificateur) de la commande qui suit...

Alors si on laisse "ps -ef | egrep 'openerp.py", grep recherche la chaine openerp.py dans la liste affichée par "ps -ef" et trouve naturellement les occurrences propres aux programmes mais aussi celle du processus "grep", alors qu'en rajoutant un crochet, qui n'est interprété que par grep comme une expression régulière (liste de caractères), il ne trouve que les occurrences propres aux programmes mais ignore la chaine de caractère littérale "o[p]enerp.py", les crochets n'étant pas développés mais interprétés littéralement...

;-))
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
7 oct. 2010 à 10:59
Merci jipicy, cela fonctionne. Je rejoints la question de Jeff. En quoi le fait de mettre p entre crochets élimine le fait d'afficher ce qui est dans egrep?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 oct. 2010 à 11:03
Voir explications ci-dessus ;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 oct. 2010 à 11:04
Salut,

mais ignore la chaine de caractère littérale "o[p]enerp.py", les crochets n'étant pas développés mais interprétés littéralement...

Comment ça?!
Pour que les crochets soient interprétés littéralement il faut un backslash \[p\] sinon avec egrep 'o[p]enerp.*py' egrep devrait pouvoir reconnaître.

oenerppy
oenerpJKLJERKLJpy
opernerppy
openerpUIORUL454545py
....
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
7 oct. 2010 à 11:04
Merci pour l'explication c'est claire maintenant.
0