Grep-Befehl in Linux/UNIX

Was ist Grep

Grep, kurz für „global regular expression print“, ist ein Befehl zum Suchen und Abgleichen von Textmustern in Dateien, die in den regulären Ausdrücken enthalten sind. Darüber hinaus ist der Befehl in jeder Linux-Distribution vorinstalliert. In diesem Leitfaden werden wir die gängigsten Verwendungen des Grep-Befehls sowie beliebte Anwendungsfälle betrachten.

Grep-Befehl in Linux

Der Grep-Befehl kann verwendet werden, um einen regulären Ausdruck oder eine Zeichenkette in einer Textdatei zu finden oder zu durchsuchen. Um dies zu demonstrieren, erstellen wir eine Textdatei welcome.txt und fügen wie gezeigt etwas Inhalt hinzu.

 
Welcome to Linux!
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.

Großartig! Jetzt sind wir bereit, ein paar grep-Befehle auszuführen und die Ausgabe so zu manipulieren, dass die gewünschten Ergebnisse erzielt werden. Um nach einer Zeichenkette in einer Datei zu suchen, führen Sie den folgenden Befehl aus:


ODER

$ filename grep „string“
„`bash

**Example**:

„`bash
$ grep „Linux“ welcome.txt

Ausgabe:

Verwendung des Grep-Kommandos

Wie Sie sehen können, hat grep nicht nur die Zeichenkette „Linux“ durchsucht und abgeglichen, sondern auch die Zeilen ausgegeben, in denen die Zeichenkette vorkommt. Wenn sich die Datei in einem anderen Dateipfad befindet, achten Sie darauf, den Dateipfad wie unten gezeigt anzugeben:

$ grep "string" /path/to/file
```bash

## Farbige Darstellung der Grep-Ergebnisse mit der Option --color

Wenn Sie auf einem System arbeiten, das die Suchzeichenfolge oder das Suchmuster nicht farblich vom Rest des Textes unterscheidet, verwenden Sie die Option "--color", um Ihre Ergebnisse hervorzuheben. Beispiel:

```bash
$ grep --color "free and opensource" welcome.txt

Ausgabe:

Suche nach einer Zeichenfolge rekursiv in allen Verzeichnissen

Wenn Sie nach einer Zeichenfolge in Ihrem aktuellen Verzeichnis und allen Unterverzeichnissen suchen möchten, verwenden Sie das -r-Flag wie folgt:

ZUm Beispiel:

Ausgabe:

Ignorieren der Groß- und Kleinschreibung

Im obigen Beispiel haben uns unsere Suchergebnisse das geliefert, was wir wollten, da der String „Linux“ in Großbuchstaben angegeben wurde und auch in der Datei in Großbuchstaben existiert. Versuchen wir nun, den String in Kleinbuchstaben zu suchen.

Nichts von der Ausgabe, richtig? Dies liegt daran, dass grepping den String „linux“ nicht finden und abgleichen konnte, da der erste Buchstabe klein geschrieben ist. Um die Groß- und Kleinschreibung zu ignorieren, verwenden Sie das -i-Flag und führen Sie den folgenden Befehl aus:

grep -i "linux" welcome.txt

Ausgabe:

Genial, nicht wahr? Das -i wird normalerweise verwendet, um Zeichenfolgen unabhängig von ihrer Groß- und Kleinschreibung anzuzeigen.

Zählen Sie die Zeilen, in denen Zeichenfolgen mit der Option -c übereinstimmen

Um die Gesamtzahl der Zeilen zu zählen, in denen das Zeichenfolgenmuster erscheint oder vorkommt, führen Sie den folgenden Befehl aus:

grep -c "Linux" welcome.txt

Ausgabe:

Verwendung von Grep, um die Ausgabe umzukehren

Um die Grep-Ausgabe umzukehren, verwenden Sie das -v-Flag. Die -v-Option weist grep an, alle Zeilen auszugeben, die den Ausdruck nicht enthalten oder mit ihm übereinstimmen. Die -v-Option weist grep an, seine Ausgabe umzukehren, was bedeutet, dass anstelle der übereinstimmenden Zeilen das Gegenteil ausgegeben wird: alle Zeilen, die nicht mit dem Ausdruck übereinstimmen. Kehren wir zu unserer Datei zurück und zeigen wir die Zeilennummern an, wie unten gezeigt. Drücken Sie ESC im Vim-Editor, geben Sie einen Doppelpunkt ein, gefolgt von:

Als nächstes Enter drücken.
Output

Um die Zeilen anzuzeigen, die nicht die Zeichenfolge „Linux“ enthalten, führen Sie „run“ aus:

grep -v "Linux" welcome.txt

Ausgabe:

Wie Sie sehen, hat grep die Zeilen angezeigt, die das Suchmuster nicht enthalten.

Nummerieren Sie die Zeilen, die das Suchmuster mit der Option -n enthalten

Um die Zeilen zu nummerieren, in denen das Zeichenfolgenmuster übereinstimmt, verwenden Sie die -n-Option, wie unten gezeigt:

grep -n "Linux" welcome.txt

Ausgabe:

Suche nach genau übereinstimmendem Wort mit der Option -w

Das Übergeben des -w-Flags durchsucht die Zeilen, die das genau übereinstimmende Wort enthalten, wie unten gezeigt:


grep -w "opensource" welcome.txt


Ausgabe:
Wenn Sie jedoch das versuchen:

grep -w "open" welcome.txt

Keine Ergebnisse werden zurückgegeben, da wir nicht nach einem Muster, sondern nach einem exakten Wort suchen!

Verwendung von Pipes mit Grep

Der grep-Befehl kann zusammen mit Pipes verwendet werden, um eindeutige Ausgaben zu erhalten. Wenn Sie beispielsweise wissen möchten, ob ein bestimmtes Paket auf einem Ubuntu-System installiert ist, führen Sie aus:

dpkg -L | grep "package-name"

Zum Beispiel, um herauszufinden, ob OpenSSH auf Ihrem System installiert ist, leiten Sie den Befehl dpkg -l an grep weiter, wie unten gezeigt:

dpkg -L | grep -i "openssh"

Ausgabe:

Anzeigen der Anzahl der Zeilen vor oder nach einem Suchmuster mit Pipes

Sie können -A oder -B verwenden, um die Anzahl der Zeilen anzuzeigen, die entweder der Suchzeichenfolge vorausgehen oder nach ihr kommen. Das -A-Flag gibt die Zeilen an, die nach der Suchzeichenfolge erscheinen, und -B gibt die Ausgabe aus, die vor der Suchzeichenfolge erscheint. Zum Beispiel:

Dieser Befehl zeigt die Zeile, die die Zeichenfolge enthält, plus 4 Zeilen Text nach der Zeichenfolge „ens“ im Befehl ifconfig an.

AUsgabe:
Umgekehrt zeigt in dem unten stehenden Beispiel die Verwendung des -B-Flags die Zeile, die die Suchzeichenfolge enthält, plus 3 Zeilen Text vor der Zeichenfolge „ether“ im Befehl ifconfig an. Ausgabe:


ifconfig | grep -B 4 ether

Verwendung von grep mit REGEX – Regulären Ausdrücken

Der Begriff REGEX ist ein Akronym für REGuläre AUSdrücke. Ein REGEX ist eine Abfolge von Zeichen, die verwendet wird, um ein Muster zu finden. Nachfolgend einige Beispiele:

^      Matches characters at the beginning of a line
$      Matches characters at the end of a line
"."    Matches any character
[a-z]  Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets

Beispiel

Um Zeilen auszugeben, die mit einem bestimmten Zeichen beginnen, lautet die Syntax:


Zum Beispiel, um die Zeilen anzuzeigen, die mit dem Buchstaben „d“ in unserer Datei welcome.txt beginnen, würden wir folgenden Befehl ausführen:

Ausgabe:
Um Zeilen anzuzeigen, die mit dem Buchstaben „x“ enden, führen Sie folgendes aus:

Ausgabe:

Hilfe zu weiteren Grep-Optionen erhalten

Wenn Sie mehr über die Verwendung des Grep-Befehls erfahren möchten, führen Sie den folgenden Befehl aus, um eine Vorschau auf weitere Flags oder Optionen zu erhalten, die Sie zusammen mit dem Befehl verwenden können:


Beispielausgabe:

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Java-Array: So prüfst du Werte effizient

JavaScript
Wie prüft man, ob ein Java Array einen Wert enthält? Es gibt viele Möglichkeiten, um zu überprüfen, ob ein Java Array einen bestimmten Wert enthält. Einfache Iteration mit einer for-Schleife…
centron Managed Cloud Hosting in Deutschland

Wie berechnet man den BLEU-Score in Python?

Python
Wie berechnet man den BLEU-Score in Python? Der BLEU-Score in Python ist eine Metrik, die die Güte von maschinellen Übersetzungsmodellen misst. Ursprünglich wurde er nur für Übersetzungsmodelle entwickelt, wird jedoch…