web-dev-qa-db-fra.com

grep exclut plusieurs chaînes

J'essaie de voir un fichier journal en utilisant tail -f et je veux exclure toutes les lignes contenant les chaînes suivantes:

"Nopaging the limit is"`  and `"keyword to remove is"

Je peux exclure une chaîne comme celle-ci:

tail -f admin.log|grep -v "Nopaging the limit is"

Mais comment puis-je exclure les lignes contenant soit string1, soit string2.

93
Jeets

Deux exemples de filtrage de plusieurs lignes avec grep:

Mettez ceci dans filename.txt:

abc
def
ghi
jkl

commande grep utilisant l'option -E avec un tuyau entre les jetons d'une chaîne:

grep -Ev 'def|jkl' filename.txt

impressions:

abc
ghi

Commande utilisant l'option -v avec un tuyau entre des jetons entourés par des parenthèses:

egrep -v '(def|jkl)' filename.txt

impressions:

abc
ghi
87
Eric Leschinski

Une autre option consiste à créer une liste d'exclusion, ce qui est particulièrement utile lorsque vous avez une longue liste d'éléments à exclure.

vi /root/scripts/exclude_list.txt

Ajoutez maintenant ce que vous souhaitez exclure

Nopaging the limit is
keyword to remove is

Maintenant, utilisez grep pour supprimer les lignes de votre fichier journal de fichiers et afficher les informations non exclues.

grep -v -f /root/scripts/exclude_list.txt /var/log/admin.log
34
rezizter
grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'

-F correspond par des chaînes littérales (au lieu de regex)

-v inverse le match

-e permet plusieurs modèles de recherche (littéraux et inversés)

31
wisbucky
egrep -v "Nopaging the limit is|keyword to remove is"
21
Stefan Podkowinski
tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'
11
hs.chandra

Vous pouvez utiliser un grep régulier comme ceci:

tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"

10
mikhail

Les greps peuvent être chaînés. Par exemple:

tail -f admin.log | grep -v "Nopaging the limit is" | grep -v "keyword to remove is"
5
Fidel