Grep-Befehl in Linux/UNIX

Was ist Grep

Grep, kurz für „global regular expression print“, ist ein Befehl, der zum Suchen und Abgleichen von Textmustern in Dateien mithilfe von regulären Ausdrücken verwendet wird. Darüber hinaus ist der Befehl in jeder Linux-Distribution vorinstalliert. In diesem Leitfaden werden wir uns die häufigsten Verwendungen des Grep-Befehls sowie beliebte Anwendungsfälle ansehen.

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 einige Inhalte wie unten gezeigt 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, einige Grep-Befehle auszuführen und die Ausgabe zu manipulieren, um die gewünschten Ergebnisse zu erhalten. Um nach einer Zeichenkette in einer Datei zu suchen, führen Sie den folgenden Befehl aus Syntax

$ grep "string" file name

ODER

$ filename grep "string"

Beispiel:

$ grep "Linux" welcome.txt

Ausgabe Wie Sie sehen können, hat Grep nicht nur die Zeichenkette „Linux“ gesucht und abgeglichen, sondern auch die Zeilen gedruckt, in denen die Zeichenkette erscheint. Wenn sich die Datei in einem anderen Dateipfad befindet, stellen Sie sicher, den Dateipfad wie unten gezeigt anzugeben

$ grep "string" /path/to/file

Colorizing Grep-Ergebnisse mit der –color-Option

Wenn Sie an einem System arbeiten, das die Suchzeichenfolge oder das Muster nicht in einer anderen Farbe als dem restlichen Text anzeigt, verwenden Sie --color, um Ihre Ergebnisse hervorzuheben. Beispiel

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

Ausgabe

Suchen nach einer Zeichenfolge rekursiv in allen Verzeichnissen

Wenn Sie eine Zeichenfolge in Ihrem aktuellen Verzeichnis und allen anderen Unterverzeichnissen suchen möchten, verwenden Sie die - r-Flagge, wie gezeigt

$ grep -r "string-name" *

Zum Beispiel

$ grep -r "linux" *

Ausgabe

Ignorieren der Groß-/Kleinschreibung

Im obigen Beispiel haben unsere Suchergebnisse das gewünschte Ergebnis geliefert, weil der String „Linux“ in Großbuchstaben angegeben war und auch in der Datei in Großbuchstaben existiert. Jetzt versuchen wir, nach dem String in Kleinbuchstaben zu suchen.

$ grep "linux" file name

Nichts aus der Ausgabe, oder? 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 Flag -i und führen Sie den Befehl unten aus

$ grep -i "linux" welcome.txt

Ausgabe Genial, oder? 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 Gesamtanzahl der Zeilen zu zählen, in denen das Zeichenfolgenmuster erscheint oder sich befindet, 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 Flag -v. Die -v-Option weist grep an, alle Zeilen auszugeben, die den Ausdruck nicht enthalten oder nicht übereinstimmen. Die -v-Option sagt grep, seine Ausgabe umzukehren, was bedeutet, dass anstatt übereinstimmende Zeilen gedruckt zu werden, das Gegenteil getan wird und alle Zeilen gedruckt werden, die nicht mit dem Ausdruck übereinstimmen. Gehen wir zurück zu unserer Datei, lassen Sie uns die Zeilennummern wie gezeigt anzeigen. Drücken Sie ESC im Vim-Editor, geben Sie einen Doppelpunkt gefolgt von

 set nu

ein, drücken Sie dann Enter Ausgabe Jetzt, um die Zeilen anzuzeigen, die die Zeichenfolge „Linux“ nicht enthalten, führen Sie

$ grep -v "Linux" welcome.txt

Ausgabe aus Wie Sie sehen können, 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 Zeichenmuster übereinstimmt, verwenden Sie die Option -n wie gezeigt

$ grep -n "Linux" welcome.txt

Ausgabe

Suchen Sie nach einem exakt übereinstimmenden Wort mit der Option -w

Die Verwendung der Option -w führt zu einer Suche nach der Zeile mit dem exakt übereinstimmenden Wort, wie gezeigt

$ grep -w "opensource" welcome.txt

Ausgabe Wenn Sie jedoch 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 in Verbindung mit Pipes verwendet werden, um eine klare Ausgabe zu erhalten. Wenn Sie beispielsweise wissen möchten, ob ein bestimmtes Paket in einem Ubuntu-System installiert ist, führen Sie

$ dpkg -L | grep "package-name"

Zum Beispiel, um herauszufinden, ob OpenSSH in Ihrem System installiert ist, leiten Sie den Befehl dpkg -l zu Grep weiter, wie gezeigt

$ dpkg -L | grep -i "openssh"

Ausgabe

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

Sie können die -A oder -B verwenden, um die Anzahl der Zeilen anzuzeigen, die entweder dem Suchstring vorausgehen oder ihm folgen. Das Flag -A kennzeichnet die Zeilen, die nach dem Suchstring kommen, und -B druckt die Ausgabe aus, die vor dem Suchstring erscheint. Zum Beispiel

$ ifconfig | grep -A 4 ens3

Dieser Befehl zeigt die Zeile an, die den String enthält, sowie 4 Zeilen Text nach dem ens String im ifconfig Befehl. Ausgabe Umgekehrt wird im folgenden Beispiel durch die Verwendung des -B Flags die Zeile angezeigt, die den Suchstring enthält, sowie 3 Zeilen Text vor dem ether String im ifconfig Befehl. Ausgabe

$ ifconfig | grep -B 4 ether

Verwenden von grep mit REGEX – regulären Ausdrücken

Der Begriff REGEX ist ein Akronym für REGulärer EXpression. Ein REGEX ist eine Sequenz von Zeichen, die verwendet wird, um ein Muster abzugleichen. Hier sind ein paar 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, die mit einem bestimmten Zeichen beginnen, auszudrucken, lautet die Syntax:

grep ^character file_name

Zum Beispiel, um die Zeilen anzuzeigen, die mit dem Buchstaben „d“ in unserer welcome.txt-Datei beginnen, führen wir aus:

$ grep ^d welcome.txt 

Ausgabe Um Zeilen anzuzeigen, die mit dem Buchstaben ‚x‘ enden, führen Sie aus:

$ grep x$ welcome.txt

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 anderer Flaggen oder Optionen zu erhalten, die Sie zusammen mit dem Befehl verwenden können:

$ grep --help

Beispiel-Ausgabe Wir danken Ihnen für Ihre Zeit, dieses Tutorial durchzugehen. Probieren Sie die Befehle aus und lassen Sie uns wissen, wie es gelaufen ist.

Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix