Comment exclure un mot avec le grep
L'outil de ligne de commande grep est extrêmement utile pour rechercher dans les données textuelles des lignes et des extraits qui correspondent à une chaîne, un caractère, un mot ou une expression régulière définis. Bien que la plupart des utilisations de grep servent à trier les données pour les faire correspondre à la syntaxe, que faire si vous voulez exclure un mot ou une chaîne avec grep à la place ? L'exclusion des correspondances de lignes avec grep est tout aussi utile que la recherche et l'impression de correspondances dans grep, alors voyons comment exclure les correspondances de chaînes et exclure des mots avec grep.
Il est évident que vous devrez avoir une certaine expérience de la ligne de commande et être exposé au grep pour trouver cela utile. Si vous voulez continuer, vous pouvez ouvrir l'application Terminal et l'essayer vous-même. Comme grep est un utilitaire agnostique au système d'exploitation, vous pouvez utiliser l'astuce d'exclusion sous Mac OS, Linux, unix, ou tout autre système qui utilise grep.
Comment exclure un seul mot avec le grep
La façon la plus simple d'exclure des lignes avec une chaîne de caractères ou une syntaxe correspondante est d'utiliser le grep et le drapeau -v.
Par exemple, disons que nous utilisons cat pour imprimer un fichier à la ligne de commande, mais que nous voulons exclure toutes les lignes qui contiennent le terme "ThisWord", alors la syntaxe serait la suivante :
cat example.txt | grep -v "ThisWord"
La sortie sera le fichier texte example.txt mais en excluant toute ligne qui contient une correspondance de chaîne avec "ThisWord".
Vous pouvez également utiliser grep directement sur les fichiers et exclure les correspondances de lignes en fonction des mots ou de la syntaxe, par exemple :
grep -v "ThisWord" example.txt
Utilisez ce qui convient le mieux à votre flux de travail.
Comment exclure des chaînes ou des mots multiples avec le grep
Maintenant que vous savez comment exclure les correspondances pour un seul mot, la prochaine question évidente est d'exclure les mots multiples avec le grep. C'est tout aussi simple, et il existe plusieurs façons d'y parvenir en utilisant le drapeau -v ainsi que le drapeau -e.
Prenons tout d'abord l'exemple ci-dessus d'utilisation du chat dans un fichier envoyé au grep, et excluons toutes les lignes correspondant à deux mots ; "Word1" et "Word2", cela donnerait l'exemple suivant :
cat example.txt | grep -v -e "Word1" -e "Word2"
Toute ligne contenant "Word1" ou "Word2" sera exclue des résultats imprimés.
Vous pouvez également utiliser grep directement sur les fichiers comme auparavant :
grep -v -e "Word1" -e "Word2" example.txt
Une autre approche consiste à séparer ce qu'il faut exclure avec le grep en utilisant un tuyau pour séparer chaque allumette, comme cela :
grep -Ev "mot1|mot2" example.txt
Si vous testez l'une de ces options sur un fichier texte d'exemple, vous constaterez que le résultat est identique quelle que soit l'approche adoptée, chacune excluant les lignes qui contiennent les phrases, la syntaxe, les mots ou le texte ciblés.
Super, montrez-moi un exemple utile d'exclusion de données avec grep !
Pour un exemple pratique que les utilisateurs avancés de Mac peuvent trouver utile, nous pouvons utiliser l'exclusion de grep lors de l'impression et de l'interrogation de l'historique de la ligne de commande pour trouver des commandes précédemment exécutées afin de trouver des correspondances avec les valeurs par défaut, mais en excluant certaines chaînes de valeurs par défaut sélectionnées de la sortie.
Dans cet exemple, nous allons imprimer l'historique des commandes pour les correspondances de chaînes par défaut, mais nous excluons toute correspondance ayant un rapport avec iTunes tel que défini par "com.apple.itunes" :
history |grep "defaults write" |grep -v -e "com.apple.itunes"
Donc, si vous avez suivi le processus, cela vous permettra d'obtenir un rapport sur toutes les exécutions historiques de la commande "Defaults write", mais en excluant tout ce qui concerne l'application iTunes. Sympa, hein ?
Si vous avez des utilisations particulièrement pratiques de l'exclusion des matchs avec grep, partagez-les avec nous dans les commentaires ci-dessous ! Et si vous avez apprécié cet article, vous aimeriez certainement parcourir nos nombreux articles en ligne de commande ici où il y a beaucoup plus à apprendre !