1. Startseite
  2. Sonstiges
  3. Ausschließende Suchanfragen mit „grep“

Ausschließende Suchanfragen mit „grep“

grep ist ein leistungsfähiges Kommandozeilenwerkzeug, das dazu dient, eine oder mehrere Eingabedateien nach Zeilen zu durchsuchen, die mit einem regulären Ausdruck übereinstimmen, und alle passenden Zeilen in die Standardausgabe zu schreiben.

In diesem Artikel zeigen wir dir, wie du beim Suchen mit grep bestimmte Wörter, Muster oder Verzeichnisse ausschließen kannst.

Ausschließen von Wörtern und Mustern

Um nur Zeilen anzuzeigen, die nicht mit einem bestimmten Suchmuster übereinstimmen, kannst du die Option -v (oder --invert-match) verwenden.

Um beispielsweise Zeilen auszugeben, die die Zeichenkette nologin nicht enthalten, kannst du folgenden Befehl verwenden:

grep -wv nologin /etc/passwd

Die Option -w weist Grep an, nur Zeilen zurückzugeben, in denen die angegebene Zeichenfolge als ganzes Wort vorkommt (umgeben von Nicht-Wortzeichen).

Standardmäßig berücksichtigt Grep die Groß- und Kleinschreibung. Wenn du die Groß- und Kleinschreibung ignorieren möchtest, verwende die Option -i.

Wenn dein Suchmuster Leerzeichen enthält, musst du es in einfache oder doppelte Anführungszeichen setzen. Du kannst auch mehrere Suchmuster mit der Option -e angeben:

grep -wv -e nologin -e bash /etc/passwd

Diese Option kannst du so oft verwenden, wie du möchtest. Eine andere Möglichkeit, mehrere Suchmuster auszuschließen, ist die Verwendung des OR-Operators |. Zum Beispiel:

grep -wv 'nologin\|bash' /etc/passwd

GNU Grep unterstützt drei Syntaxen für reguläre Ausdrücke: Basic, Extended und Perl-kompatibel. Wenn du den erweiterten regulären Ausdruck verwenden möchtest, verwende die Option -E, wie hier gezeigt:

grep -Ewv 'nologin|bash' /etc/passwd

Du kannst verschiedene Übereinstimmungen angeben, sowohl literale Zeichenketten als auch Ausdrücke. Zum Beispiel:

grep -v "^Spiele" Datei.txt

Die Ausgabe eines Befehls kann mit Grep gefiltert werden, um nur Zeilen anzuzeigen, die einem bestimmten Muster entsprechen. Hier ist ein Beispiel:

ps -ef | grep -wv root

Ausschließen von Verzeichnissen und Dateien

Manchmal möchtest du bestimmte Verzeichnisse von den Ergebnissen einer rekursiven Suche (mit den Optionen -r oder -R) ausschließen. Der Hauptunterschied zwischen den Optionen -r und -R liegt darin, dass Grep bei Verwendung von -R symbolischen Links folgt.

Um ein Verzeichnis von der Suche auszuschließen, verwende die Option --exclude-dir. Der Pfad zum auszuschließenden Verzeichnis ist relativ zum Suchverzeichnis.

Hier ist ein Beispiel, wie du die Zeichenkette kommandozeile in allen Dateien innerhalb von /etc suchst und das Verzeichnis /etc/pki ausschließt:

grep -R --exclude-dir=pki kommandozeile /etc

Um mehrere Verzeichnisse auszuschließen, schließe die auszuschließenden Verzeichnisse in geschweifte Klammern ein und trenne sie durch Kommas ohne Leerzeichen, wie hier:

grep -r --exclude-dir={proc,boot,sys} gnu /

Wenn du Platzhalter verwenden möchtest, um Dateien auszuschließen, deren Basisname mit einem bestimmten GLOB übereinstimmt, kannst du das wie folgt tun:

grep -rl --exclude=*.{png,jpg} kommandozeile *

Zusammenfassung

Mit dem Befehl Grep kannst du bei der Suche nach Textmustern in Dateien Wörter, Muster und Verzeichnisse ausschließen. Wenn du Fragen oder Feedback hast, hinterlasse gerne einen Kommentar.

War dieser Beitrag hilfreich?

Verwandte Beiträge