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
.
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
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
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)
egrep -v "Nopaging the limit is|keyword to remove is"
tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'
Vous pouvez utiliser un grep régulier comme ceci:
tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"
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"