GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grep-Befehl unter Linux/UNIX

In Linux- und Unix-Systemen ist Grep, kurz für „global regular expression print“, ein Befehl, der zum Suchen und Vergleichen von Textdateien verwendet wird, die in den regulären Ausdrücken enthalten sind. Außerdem ist der Befehl in jeder Linux-Distribution vorinstalliert. In diesem Leitfaden werden wir uns anhand einiger Beispiele die allgemeine Verwendung von grep-Befehlen ansehen.

Grep-Befehl unter Linux

Der Grep-Befehl kann verwendet werden, um einen regulären Ausdruck oder eine Zeichenfolge in einer Textdatei zu finden oder zu durchsuchen. Um dies zu demonstrieren, erstellen wir eine Textdatei welcome.txt und fügen Sie einige Inhalte wie 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ß! Jetzt sind wir bereit, ein paar grep-Befehle auszuführen und die Ausgabe zu manipulieren, um die gewünschten Ergebnisse zu erhalten.

Um nach einer Zeichenfolge 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 Zeichenfolge „Linux“ gesucht und abgeglichen, sondern auch die Zeilen gedruckt, in denen die Zeichenfolge vorkommt.

Wenn sich die Datei in einem anderen Dateipfad befindet, achten Sie darauf, den Dateipfad wie unten gezeigt anzugeben

$ grep "string" /path/to/file

Einfärben von Grep-Ergebnissen mit der Option –color

Wenn Sie auf einem System arbeiten, das die Suchzeichenfolge oder das Suchmuster nicht in einer anderen Farbe als der Rest des Textes anzeigt, verwenden Sie die --color um Ihre Ergebnisse hervorzuheben.

Beispiel

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

Ausgabe

Rekursive Suche nach einem String in allen Verzeichnissen

Wenn Sie in Ihrem aktuellen Verzeichnis und allen anderen Unterverzeichnissen nach einer Zeichenfolge suchen möchten, suchen Sie mit - r Flagge wie gezeigt

$ grep -r "string-name" *

Zum Beispiel

$ grep -r "linux" *

Ausgabe

Groß-/Kleinschreibung ignorieren

Im obigen Beispiel lieferten unsere Suchergebnisse das, was wir wollten, da die Zeichenfolge „Linux“ in Großbuchstaben angegeben wurde und auch in Großbuchstaben in der Datei vorhanden ist. Versuchen wir nun, die Zeichenfolge in Kleinbuchstaben zu suchen.

$ grep "linux" file name

Nichts von der Ausgabe, richtig? Dies liegt daran, dass Grepping die Zeichenfolge „linux“ nicht finden und abgleichen konnte, da der erste Buchstabe klein geschrieben ist. Um die Groß-/Kleinschreibung zu ignorieren, verwenden Sie -i markieren und den folgenden Befehl ausführen

$ grep -i "linux" welcome.txt

Ausgabe

Großartig, nicht wahr? Das - i wird normalerweise verwendet, um Zeichenfolgen unabhängig von ihrer Groß-/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 sich befindet, führen Sie den folgenden Befehl aus

$ grep -c "Linux" welcome.txt

Ausgabe

Mit Grep die Ausgabe invertieren

Um die Grep-Ausgabe umzukehren, verwenden Sie -v Flagge. Das -v Die Option weist grep an, alle Zeilen auszugeben, die den Ausdruck nicht enthalten oder nicht übereinstimmen.

Die Option –v weist grep an, seine Ausgabe zu invertieren, was bedeutet, dass statt übereinstimmende Zeilen das Gegenteil zu tun und alle Zeilen zu drucken, 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 vollständigen Doppelpunkt ein, gefolgt von

 set nu

Drücken Sie als Nächstes die Eingabetaste

Ausgabe

Um nun die Zeilen anzuzeigen, die die Zeichenfolge „Linux“ nicht enthalten, führen Sie

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 enthalten, mit der Option -n

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

$ grep -n "Linux" welcome.txt

Ausgabe

Suche mit der Option -w nach genau passenden Wörtern

Übergeben Sie dann -w flag sucht nach der Zeile, die das genau passende Wort enthält, wie gezeigt

$ grep -w "opensource" welcome.txt

Ausgabe

Wenn Sie es jedoch versuchen

$ grep -w "open" welcome.txt

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

Verwendung von Pipes mit grep

Der Befehl grep kann zusammen mit Pipes verwendet werden, um eine eindeutige Ausgabe zu erhalten.

Wenn Sie beispielsweise wissen möchten, ob ein bestimmtes Paket im Ubuntu-System installiert ist, führen Sie es aus

$ dpkg -L | grep "package-name"

Um beispielsweise herauszufinden, ob OpenSSH in Ihrem System installiert wurde, geben Sie dpkg -l ein Befehl grep wie gezeigt

$ dpkg -L | grep -i "openssh"

Ausgabe

Anzeige der Zeilenanzahl vor oder nach einem Suchmuster mit Pipes

Sie können das -A verwenden oder -B um die Anzahl der Zeilen anzuzeigen, die entweder vor oder nach der Suchzeichenfolge stehen. Das -A Flag bezeichnet die Zeilen, die nach dem Suchstring und -B kommen druckt die Ausgabe, die vor der Suchzeichenfolge erscheint.

Zum Beispiel

$ ifconfig | grep -A 4 ens3

Dieser Befehl zeigt die Zeile mit der Zeichenfolge plus 4 Textzeilen nach dem ens an String in ifconfig Befehl.

Ausgabe

Umgekehrt zeigt die Verwendung des Flags -B im folgenden Beispiel die Zeile mit der Suchzeichenfolge plus 3 Textzeilen vor dem ether an String in ifconfig Befehl.

Ausgabe

$ ifconfig | grep -B 4 ether

Verwendung von grep mit regulären Ausdrücken (REGEX)

Der Begriff REGEX ist ein Akronym für REG ular EX Druck. Ein REGEX ist eine Folge von Zeichen, die verwendet wird, um ein Muster abzugleichen. 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
Zum Drucken von Zeilen, die mit einem bestimmten Zeichen beginnen, lautet die Syntax;

grep ^character file_name

Um beispielsweise die Zeilen anzuzeigen, die in unserer Datei welcome.txt mit dem Buchstaben „d“ beginnen, würden wir

ausführen
$ 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 auf andere Flags oder Optionen zu erhalten, die Sie zusammen mit dem Befehl verwenden können.

$ grep --help

Beispielausgabe

Wir danken Ihnen, dass Sie sich die Zeit genommen haben, dieses Tutorial durchzugehen. Probieren Sie die Befehle gerne aus und lassen Sie uns wissen, wie es gelaufen ist.


Linux
  1. Linux grep-Befehl

  2. Linux-mv-Befehl

  3. Linux-Du-Befehl

  4. Linux-IP-Befehl

  5. Linux-cd-Befehl

Linux gegen Unix

ls-Befehl unter Linux/UNIX

cp-Befehl unter Linux/UNIX

Finden Sie Befehl in Linux/UNIX

Verwendung des grep-Befehls unter Linux

15 Praktische Grep-Befehlsbeispiele in Linux / UNIX