Comment utiliser la correspondance négative avec grep sous Linux (lignes d’impression qui ne correspondent pas)

Comment utiliser la correspondance négative avec grep sous Linux (lignes d’impression qui ne correspondent pas)

grep est un utilitaire de recherche en ligne de commande pour Linux qui imprime des lignes dans des fichiers qui correspondent à un modèle ou à une expression régulière. Il est également utile d’inverser les correspondances pour filtrer toutes les lignes d’un fichier contenant une chaîne donnée.

Correspondance négative avec grep

Pour utiliser une correspondance négative dans grep, vous devez émettre la commande avec les -v indicateurs ou . --invert-matchCela n’imprimera que les lignes qui ne correspondent pas au motif donné.

grep -v "bar"file

Sachez cependant que puisque grep rien ne correspond, il n’y a aucun moyen d’utiliser -o le drapeau pour afficher « correspond uniquement », puisque rien ne correspond techniquement. grep peut correspondre plusieurs fois dans une chaîne, mais dans ce cas, peu importe s’il y a plusieurs correspondances. Tout match unique entraînera grep un saut de ligne.

Cela fonctionne également avec les expressions régulières (regex) et imprimera toute chaîne correspondant à la regex.

grep -v "foo ba[rz]"file

Bien que vous puissiez écrire des expressions régulières qui font une correspondance négative, il est généralement plus facile d’inverser la correspondance de cette façon.

Alternativement, si vous préférez utiliser awk, vous pouvez utiliser le modificateur d’exclamation pour inverser l’expression régulière.

awk '!/bar/' file

Noms de fichiers correspondants négatifs

L’indicateur en minuscule -l entraînera grep l’impression des noms de fichiers contenant des correspondances au lieu du contenu correspondant réel. Cela peut être utile lors de l’analyse d’une liste de fichiers, mais il est également parfois utile de l’inverser.

Reverse -l est une variante majuscule -Lqui fait le contraire :

grep -L "bar". /*.txt

Assurez-vous de ne pas utiliser -v le drapeau c -Lpour inverser la correspondance avant d’imprimer des fichiers sans correspondance, ou vous vous retrouverez dans une situation de « double opposé » où la correspondance est inversée deux fois et n’a pas l’effet souhaité.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *