Wie man ein Wort mit grep ausschließt

Das Befehlszeilen-Tool grep ist sehr nützlich, um Textdaten nach Zeilen und Schnipsel zu durchsuchen, die einer definierten Zeichenfolge, einem Zeichen, einem Wort oder einem regulären Ausdruck entsprechen. Während die meisten Verwendungen von grep zum Sortieren von Daten für Syntaxübereinstimmungen dienen, was ist, wenn Sie stattdessen ein Wort oder eine Zeichenfolge mit grep ausschließen möchten? Das Ausschließen von Zeilenübereinstimmungen mit grep ist genauso nützlich wie das Suchen und Drucken von Übereinstimmungen in grep. Sehen wir uns nun an, wie Sie Zeichenfolgenübereinstimmungen ausschließen und Wörter mit grep ausschließen können.


Offensichtlich wirst du einige Erfahrung in der Kommandozeile und Erfahrung mit grep haben wollen, um das nützlich zu finden. Wenn Sie mitkommen möchten, können Sie die Terminal-Anwendung öffnen und es selbst ausprobieren. Da grep ein OS-agnostisches Hilfsprogramm ist, können Sie den Ausschluss-Trick in Mac OS, Linux, Unix oder was auch immer Sie verwenden, benutzen.

Wie man ein einzelnes Wort mit grep ausschließt

Die einfachste Möglichkeit zum Ausschließen von Zeilen mit einer Zeichenfolge oder Syntaxübereinstimmung besteht in der Verwendung von grep und dem Flag -v.

Angenommen, wir verwenden cat, um eine Datei in der Befehlszeile zu drucken, aber wir möchten alle Zeilen ausschließen, die den Begriff "ThisWord" enthalten. Dann sieht die Syntax wie folgt aus:

cat example.txt | grep -v "ThisWord"

Die Ausgabe wird die example.txt-Textdatei sein, aber keine Zeile, die eine Zeichenkette mit "ThisWord" enthält.

Sie können grep auch direkt für Dateien verwenden und Zeilenübereinstimmungen, die auf Wörtern oder Syntax basieren, ausschließen:

grep -v "ThisWord" example.txt

Verwenden Sie, was am besten für Ihren speziellen Workflow funktioniert.

Wie man mehrere Zeichenfolgen oder Wörter mit grep ausschließt

Jetzt, da Sie wissen, wie Sie Übereinstimmungen für ein einzelnes Wort ausschließen können, besteht die nächste offensichtliche Frage darin, mehrere Wörter mit grep auszuschließen. Das ist genauso einfach und es gibt ein paar verschiedene Möglichkeiten, dies zu erreichen, indem Sie das Flag -v sowie das Flag -e verwenden.

Als erstes nehmen wir das obige Beispiel, in dem wir cat für eine Datei verwenden, die an grep piped ist, und schließen Sie Zeilen aus, die zwei Wörtern entsprechen. "Word1" und "Word2" würde dies wie folgt aussehen:

cat example.txt | grep -v -e "Word1" -e "Word2"

Alle Zeilen, die "Word1" oder "Word2" enthalten, werden von den gedruckten Ergebnissen ausgeschlossen.

Sie können grep auch direkt auf Dateien wie vorher verwenden:

grep -v -e "Word1" -e "Word2" example.txt

Ein anderer Ansatz besteht darin, zu trennen, was mit grep ausgeschlossen werden soll, indem Sie wie folgt eine Pipe verwenden, um jede Übereinstimmung zu trennen:

grep -Ev "word1|word2" example.txt

Wenn Sie eine dieser Optionen in einer Beispieltextdatei testen, werden Sie feststellen, dass die Ausgabe identisch ist, unabhängig davon, welche Vorgehensweise Sie gewählt haben. Dabei werden Zeilen ausgeschlossen, die die gewünschten Wortgruppen, Syntax, Wörter oder Text enthalten.

Toll, zeig mir ein nützliches Beispiel zum Ausschließen von Daten mit grep!

Für ein praktisches Beispiel, das fortgeschrittene Mac-Benutzer hilfreich finden können, können wir beim Drucken und Abfragen des Befehlszeilenverlaufs den grep-Ausschluss verwenden, um zuvor ausgeführte Befehle zu finden, um Standard-Übereinstimmungen zu finden, aber einige ausgewählte Standardzeichenfolgen aus der Ausgabe auszuschließen.

Im Beispiel hier werden wir den Befehlshistorie für die Standardzeichenfolgenabgleiche ausdrucken, aber alles ausschließen, was mit iTunes zu tun hat, wie von "com.apple.itunes" definiert:

history |grep "defaults write" |grep -v -e "com.apple.itunes"

Wenn Sie also fortfahren, würde dies alle historischen Ausführungen des Befehls "defaults write" zurückmelden, aber alles, was die iTunes-Anwendung betrifft, ausschließen. Schön, nicht wahr?

Wenn Sie besonders nützliche Funktionen zum Ausschließen von Übereinstimmungen mit grep nutzen möchten, teilen Sie diese in den Kommentaren mit uns! Und wenn Ihnen dieser Artikel gefallen hat, würden Sie mit Sicherheit gerne unsere vielen Befehlszeilenartikel durchblättern, in denen es noch viel mehr zu lernen gibt!