Existe-t-il un moyen plus simple de procéder?
grep -v foo file | grep -v bar
Il y a probablement des façons très élégantes de le faire avec egrep, mais comment aller avec du vieux grep ordinaire?
EDIT: grep -v 'foo\|bar' file
semble fonctionner uniquement avec GNU grep. Je suis sur Solaris. Une solution pour ça?
-v
drapeau est une négation.not(A or B) == not(A) and not(B)
Réponses:
Vous pouvez avoir plusieurs tests dans une seule
grep
commande en passant chaque expression avec un-e
argument au lieu du premier argument sans option comme vous le voyez normalement:Cela signifie la même chose que votre commande: imprimer des lignes
file
qui ne contiennent ni "foo" ni "bar".Gardez à l'esprit que la suppression
-v
inverse complètement cela; cela change aussi le fonctionnement logique! Vous obtenez toutes les lignes qui contiennent "foo" ou "bar".la source
grep -Ev 'word1|word2'
devrait fonctionner très bienla source
egrep -v 'word1|word2
\|
est une extension GNU grep, mais vous pouvez réaliser la même chose de manière portable avec-E
et l'|
opérateur.