Vous connaissez l'outil de commande grep et son utilité? Voici comment exclure un mot avec la ligne de commande grep.
L'outil de ligne de commande grep est extrêmement utile pour rechercher dans les données de texte des lignes et des extraits qui correspondent à une chaîne, un caractère, un mot ou une expression régulière définis. Alors que la plupart des utilisations de grep sont pour le tri des données pour les correspondances de syntaxe, que se passe-t-il si vous souhaitez exclure un mot ou une chaîne avec grep à la place? L'exclusion de correspondances de ligne avec grep est tout aussi utile que la recherche et l'impression de correspondances dans grep. Voyons donc comment exclure les correspondances de chaînes et exclure les mots avec grep.
Évidemment, vous voudrez avoir une certaine expérience en ligne de commande et une exposition à grep pour trouver cela utile. Si vous souhaitez suivre, vous pouvez ouvrir l'application Terminal et l'essayer vous-même. Étant donné que grep est un utilitaire indépendant du système d'exploitation, vous pouvez utiliser l'astuce d'exclusion sous Mac OS, Linux, unix ou tout ce que vous avez qui utilise grep.
Comment exclure un seul mot avec grep
La façon la plus simple d'exclure des lignes avec une chaîne ou une syntaxe est d'utiliser grep et l'indicateur -v.
Par exemple, supposons que nous utilisons cat pour imprimer un fichier sur la ligne de commande, mais que nous voulons exclure toutes les lignes qui incluent le terme «ThisWord», la syntaxe ressemblera à ce qui suit:
cat example.txt | grep -v "ThisWord"
La sortie sera le fichier texte example.txt mais à l'exclusion de toute ligne contenant une correspondance de chaîne avec «ThisWord».
Vous pouvez également utiliser grep directement sur les fichiers et exclure les correspondances de ligne basées sur les mots ou la syntaxe, comme ceci:
grep -v "ThisWord" example.txt
Utilisez celui qui convient le mieux à votre flux de travail particulier.
Comment exclure plusieurs chaînes ou mots avec grep
Maintenant que vous savez comment exclure les correspondances pour un seul mot, la prochaine question évidente concerne l'exclusion de plusieurs mots avec grep. C’est tout aussi simple, et il existe plusieurs façons différentes d’y parvenir en utilisant le drapeau -v ainsi que le drapeau -e.
Prenons d'abord l'exemple ci-dessus de l'utilisation de cat sur un fichier canalisé vers grep, et excluons toutes les lignes correspondant à deux mots; «Word1» et «Word2», cela ressemblerait à ceci:
cat example.txt | grep -v -e "Word1" -e "Word2"
Toutes les lignes contenant «Word1» ou «Word2» seront exclues des résultats imprimés.
Vous pouvez également utiliser grep directement sur des fichiers comme auparavant:
grep -v -e "Word1" -e "Word2" example.txt
Une autre approche consiste à séparer les éléments à exclure avec grep en utilisant un canal pour séparer chaque correspondance, comme ceci:
grep -Ev "mot1 | mot2" example.txt
Si vous testez l'une de ces options sur un exemple de fichier texte, vous constaterez que la sortie est identique quelle que soit l'approche que vous adoptez, chacune excluant les lignes qui incluent les phrases ciblées, la syntaxe, les mots ou la correspondance de texte.
Génial, 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 grep lors de l'impression et de l'interrogation de l'historique de la ligne de commande pour rechercher les commandes précédemment exécutées afin de trouver les correspondances par défaut, mais en excluant certaines chaînes par défaut sélectionnées de la sortie.
Dans l'exemple ici, nous imprimerons l'historique des commandes pour les correspondances de chaînes par défaut, mais exclurons tout ce qui concerne l'iTunes tel que défini par «com.apple.itunes»:
history | grep "defaults write" | grep -v -e "com.apple.itunes"
Donc, si vous avez suivi, cela rendrait compte de toutes les exécutions historiques de la commande "écriture par défaut", mais à l'exclusion de tout ce qui concernait l'application iTunes. Bien hein?
Si vous avez des utilisations particulièrement utiles pour exclure les correspondances avec grep, partagez-les avec nous dans les commentaires ci-dessous! Et si vous avez aimé cet article, vous aimeriez certainement parcourir nos nombreux articles en ligne de commande ici où il y a encore beaucoup à apprendre!