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.