grep exclure plusieurs chaînes de caractères
Je suis en train de voir un fichier journal à l'aide de la queue -f
et que vous souhaitez exclure toutes les lignes contenant les chaînes de caractères suivantes:
"Nopaging the limit is"` and `"keyword to remove is"
Je suis en mesure d'exclure une chaîne comme celle-ci:
tail -f admin.log|grep -v "Nopaging the limit is"
Mais comment puis-je exclure des lignes contenant soit de string1
ou string2
.
Vous devez vous connecter pour publier un commentaire.
Deux exemples de filtrage de plusieurs lignes avec grep:
Mettre cela en
filename.txt
:commande grep à l'aide de l'option-E avec un tuyau entre les jetons dans une chaîne de caractères:
imprime:
Commande à l'aide de l'option-v avec la canalisation entre les jetons entouré par des parens:
imprime:
grep -v -e def -e jkl
méthode qui à mon humble avis est plus clair...grep -Fv -e def -e jkl
qui est encore plus rapide!grep -vF $(pgrep myprocess)
Une autre option est de créer une liste d'exclusion, ceci est particulièrement utile lorsque vous avez une longue liste de choses à exclure.
Maintenant ajouter ce que vous souhaitez exclure
Maintenant utiliser grep pour supprimer les lignes de votre fichier log un fichier et d'afficher les informations ne sont pas exclues.
-v
avec-f
(ou que ce dernier a même existé).grep -v -f <(gen_exclusions.sh) /var/log/admin.log
-F
matchs par les chaînes littérales (au lieu de regex)-v
inverse le match-e
permet l'utilisation de plusieurs modèles de recherche (tous les littérale et inversé)grep -v
des instances et de l'artificiel exigence d'une regex (permet de multiples chaînes spécifiées nettement séparée des arguments). Juste imaginer la construction que la regex par programmation dans un script pour les chaînes qui pourrait contenir quoi que ce soit...Vous pouvez utiliser grep comme ceci:
tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"
Le grep peuvent être enchaînés. Par exemple: