Skip to content
On this page

Inhalte mit dem Grep-Befehl suchen

🎫 Der Inhalt wurde am 2023-08-23 für folgende Plattformen validiert
✅ Ubuntu 22.10
✅ macOS 13.2.1

Die Suche nach Inhalten in Dateien ist eine häufige Aufgabe für Linux-Benutzer. Zum Beispiel möchten Sie möglicherweise alle Dateien finden, die ein bestimmtes Wort oder einen bestimmten Ausdruck enthalten. Es ist sehr nützlich, wenn Sie nach einer bestimmten Konfiguration oder einem Methodenaufruf in einem großen Codebestand suchen.

grep ist ein Befehlszeilen-Dienstprogramm, das in Linux-Systemen verwendet wird, um nach bestimmten Mustern in Dateiinhalten zu suchen. Es ist ein leistungsstolles Werkzeug, das Benutzern ermöglicht, nach Textzeichenfolgen, regulären Ausdrücken oder Mustern in einer oder mehreren Dateien zu suchen. grep wird häufig in Verbindung mit anderen Befehlen verwendet, um Daten zu filtern und zu manipulieren. Es ist auch auf anderen Plattformen wie Windows und macOS verfügbar.

In diesem Tutorial zeigen wir Ihnen, wie Sie den grep-Befehl anhand praktischer Beispiele und detaillierter Erklärungen der häufigsten Optionen verwenden können.

Wie man den Grep-Befehl verwendet

Die grundlegende Syntax des grep-Befehls lautet wie folgt:

bash
grep [OPTIONEN] MUSTER [DATEI...]

Der grep-Befehl sucht nach einem Muster in einer oder mehreren Dateien. Wenn das Muster gefunden wird, werden die übereinstimmenden Zeilen ausgegeben. Wenn keine Dateien angegeben sind, liest grep von der Standardeingabe.

Angenommen, Sie haben eine Datei namens file.txt mit folgendem Inhalt:

This is a test file.
It has some text in it.
Another line of text.

Um nach dem Wort text in der Datei file.txt zu suchen, würden Sie den folgenden Befehl ausführen:

bash
> grep text file.txt

It has some text in it.

Die Ausgabe zeigt die Zeile, die das Wort text enthält.

Wenn Sie den Kontext der Übereinstimmung anzeigen möchten, können Sie die Option -C gefolgt von der Anzahl der Zeilen verwenden, die vor und nach der Übereinstimmung angezeigt werden sollen:

bash
> grep -C 1 Text file.txt

This is a test file.
It has some text in it.
Another line of text.

Die Ausgabe zeigt die Zeile, die das Wort Text enthält, sowie 1 Zeile davor und danach.

Wenn es mehrere Ergebnisse gibt, wird die Ausgabe durch -- getrennt. Zum Beispiel:

bash
> grep -C 1 xxx file.txt

This is a test file.
It has some text in it.
Another line of text.
--
This is a test file.
It has some text in it.
Another line of text.

Grep-Befehlsoptionen

Der grep-Befehl wird mit vielen Optionen geliefert, die es Ihnen ermöglichen, die Ausgabe anzupassen und nach bestimmten Mustern zu suchen. In diesem Abschnitt zeigen wir Ihnen die häufigsten Optionen.

Groß-/Kleinschreibung ignorieren

Standardmäßig ist grep zeichengroß- und kleinschreibungsabhängig. Das bedeutet, dass es nicht nach Text oder TEXT sucht, wenn Sie nach dem Wort text suchen.

Um grep zeichengroß- und kleinschreibungsunabhängig zu machen, verwenden Sie die Option -i:

bash
> grep -i TEXT file.txt

It has some text in it.

Invertiere Übereinstimmung

Um die Übereinstimmung umzukehren, verwenden Sie die Option -v. Es werden alle Zeilen gedruckt, die nicht dem Muster entsprechen:

bash
> grep -v text file.txt

This is a test file
Another line of text.

Zeilennummern anzeigen

Um die Zeilennummern der übereinstimmenden Zeilen anzuzeigen, verwenden Sie die Option -n:

bash
> grep -n text file.txt

2:It has some text in it.

Nur übereinstimmenden Teil anzeigen

Um nur den übereinstimmenden Teil der Zeile anzuzeigen, verwenden Sie die Option -o:

bash
> grep -o text file.txt

text

Nur Dateinamen anzeigen

Um nur die Dateinamen anzuzeigen, die dem Muster entsprechen, verwenden Sie die Option -l:

bash
> grep -l text file.txt

file.txt

Nur Anzahl anzeigen

Um nur die Anzahl der übereinstimmenden Zeilen anzuzeigen, verwenden Sie die Option -c:

bash
> grep -c text file.txt

1

Rekursiv suchen

Zusätzlich zur Suche in einer einzelnen Datei können Sie auch rekursiv in einem Verzeichnis und seinen Unterverzeichnissen mit der Option -r suchen:

bash
> grep -r text .

file.txt:It has some text in it.

Mehrere Muster suchen

Um nach mehreren Mustern zu suchen, verwenden Sie die Option -e, gefolgt vom Muster:

bash
> grep -e text -e line file.txt

It has some text in it.
Another line of text.

Beachten Sie, dass die Muster mit dem logischen ODER-Operator abgeglichen werden, was bedeutet, dass wenn eines der Muster übereinstimmt, die Zeile ausgegeben wird.

Dateien ausschließen

Um Dateien auszuschließen, die einem bestimmten Muster entsprechen, verwenden Sie die Option --exclude:

bash
> grep --exclude=*.txt text .

Sie können auch die Option --exclude-dir verwenden, um Verzeichnisse auszuschließen:

bash
> grep --exclude-dir=dir text .

Beachten Sie, dass der Wert von --exclude und --exclude-dir Glob-Ausdrücke sind, die mit den Dateinamen abgeglichen werden. Sie können * verwenden, um eine beliebige Anzahl von Zeichen und ? verwenden, um ein einzelnes Zeichen abzustimmen.

Reguläre Ausdrücke verwenden

grep unterstützt reguläre Ausdrücke. Um reguläre Ausdrücke zu verwenden, verwenden Sie die Option -E:

bash
> grep -E 't.xt' file.txt

It has some text in it.

Beachten Sie, dass der Punkt im regulären Ausdruck jedes Zeichen abstimmt. Also stimmt t.xt mit text überein.

Übliche Grep-Befehlsbeispiele

In diesem Abschnitt zeigen wir Ihnen einige praktische Beispiele für die Verwendung des grep-Befehls.

Nach einem Wort in einer Datei suchen

Verwenden Sie den folgenden Befehl, um nach einem Wort in einer Datei zu suchen:

bash
> grep -n -C 2 -i Wort datei.txt

Nach einem Wort unter einem bestimmten Verzeichnis suchen

Verwenden Sie den folgenden Befehl, um nach einem Wort unter einem bestimmten Verzeichnis zu suchen:

bash
> grep -r -n -i Wort /pfad/zum/verzeichnis

Dies ist nützlich, wenn Sie beispielsweise nach einem bestimmten Variablennamen im node_modules-Verzeichnis suchen möchten oder überprüfen möchten, ob eine bestimmte Konfiguration in Ihrem Projekt verwendet wird.

Suche und Ausschluss von Verzeichnissen

Verwenden Sie den folgenden Befehl, um nach einem Wort zu suchen und Verzeichnisse auszuschließen:

bash
> grep -r -n -i --exclude-dir=verzeichnis1 --exclude-dir=verzeichnis2 Wort /pfad/zum/verzeichnis

Sie möchten beispielsweise nach einem Wort in einem Projektverzeichnis suchen, aber das node_modules-Verzeichnis ausschließen.

Fazit

In diesem Tutorial haben wir Ihnen gezeigt, wie Sie den grep-Befehl verwenden. Sie können nun nach bestimmten Mustern in Dateien und Verzeichnissen suchen. Um mehr über den grep-Befehl zu erfahren, besuchen Sie die offizielle Dokumentation.