grep
est un utilitaire de recherche en ligne de commande pour Linux qui imprime les lignes dans les fichiers qui correspondent à un modèle ou à une expression régulière. Il est également utile d’inverser les correspondances, ce qui filtrera toutes les lignes d’un fichier contenant la chaîne donnée.
Correspondance négative avec grep
Pour utiliser la correspondance négative dans grep
vous devez exécuter la commande avec le -v
ou --invert-match
drapeaux. Cela n’imprimera que les lignes qui ne correspondent pas au motif donné.
grep -v "bar" file
Gardez à l’esprit que depuis grep
ne correspond à rien, il n’y a aucun moyen d’utiliser le -o
drapeau pour imprimer « uniquement les correspondances », puisque rien n’a techniquement correspondu. grep
est capable de faire correspondre plusieurs fois par ligne, mais dans ce cas, peu importe s’il y a plusieurs correspondances. Tout match unique entraînera grep
pour omettre la ligne.
Cela fonctionne également avec les expressions régulières (regex) et imprimera toute ligne dont les fichiers correspondent à la regex.
grep -v "foo ba[rz]" file
Bien que vous puissiez écrire des expressions régulières qui effectuent 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
La minuscule -l
le drapeau causera grep
pour imprimer les 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 de la même manière, il est également utile d’inverser cela parfois.
L’inverse de -l
est la variante majuscule, -L
qui fait le contraire :
grep -L "bar" ./*.txt
Assurez-vous de ne pas utiliser le -v
drapeau avec -L
d’inverser la correspondance avant d’imprimer les fichiers sans la correspondance, sinon vous vous retrouverez dans une situation de « double opposé » où la correspondance est inversée deux fois et n’a pas l’effet escompté.
Vous pouvez lire l’article original (en Angais) sur le sitewww.howtogeek.com