Anonim

Globaler regulärer Ausdruck print oder einfach grep ist einer der vielseitigsten und gebräuchlichsten Befehle in Unix- und Linux-Systemen. Der Befehl sucht nach einzelnen oder mehreren Eingabedateien und übereinstimmenden Musterzeilen. Als Ergebnis erhalten Sie eine Standardausgabe mit den übereinstimmenden Zeilen.

Wenn Sie keine Datei angeben, verwendet grep die Standardeingabe für die Auslesungen und es wird höchstwahrscheinlich die Ausgabe eines anderen Befehls sein. Insgesamt zeichnet sich grep durch eine einfache Syntax aus, unabhängig davon, ob Sie sie mit oder ohne Dateinamen verwenden.

Dieser Artikel bietet Ihnen einen schnellen Überblick über die grep-Syntax und einige grundlegende Befehle, die Sie mit oder ohne Dateinamen verwenden können.

Bevor du anfängst

Alle grep-Befehle folgen der gleichen Syntax und jeder Parameter hat eine bestimmte Funktion. Hier ist die Beispielzeile:

grep PATTERN

Sie können in grep eine Reihe von OPTIONEN verwenden, um die Befehlsausgabe zu steuern, und die Zahl beginnt bei Null. MUSTER gibt das Suchmuster an, das Sie anwenden möchten. In der DATEI werden hier der oder die Dateinamen gespeichert, aber der Parameter kann auf Null gesetzt werden.

String-Suche in der Befehlsausgabe

Wie angegeben, müssen Sie keine bestimmten Eingabedateien verwenden. Die Ausgabe eines anderen Befehls kann in grep verwendet werden, um Zeilen zu erhalten, die genau mit einem Muster übereinstimmen. Hiermit kann ermittelt werden, welche Prozesse im System aktiv sind. Dies ist eine Beispielbefehlssyntax:

$ ps -ef | grep www-data

Die Ausgabe sollte ungefähr so ​​aussehen:

www-data 18247 12675 4 16:00? 00:00:00 php-fpm: pool www
root 18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto –exclude-dir = .bzr –exclude-dir = CVS –exclude-dir = .git –exclude-dir = .hg –exclude- dir = .svn www-data
www-data 31147 12770 0 Oct22? 00.05.51 Nginx: Arbeitsprozess
www-data 31148 12770 0 Oct22? 00:00:00 nginx: Cache-Manager-Prozess

Es gibt eine Möglichkeit, die Befehlszeile mit grep-Prozessen auszuschließen. Dazu müssen Sie $ ps -ef | verwenden grep www-data | grep -v grep Befehl.

Grep-Wortsuche

Sie können grep-Befehle verwenden, um nach bestimmten Wörtern in Dateien auf Ihrem System zu suchen. Tatsächlich muss kein ganzes Wort eingegeben werden. Sie können zum Beispiel nur gnu verwenden und der Befehl gibt alle Wörter aus, die diese drei Buchstaben enthalten. Die Befehlssyntax lautet:

$ grep gnu / usr / share / words

Nach dem Ausführen des Befehls sollte Ihre Ausgabe ungefähr so ​​aussehen:

Cygnus
Gnu
Interregnum
lgnu9d
Lignum
magnum
Magnuson
Sphagnum
Flügelmutter

Auf der anderen Seite können Sie nur nach diesem bestimmten Wort oder dieser bestimmten Buchstabenfolge suchen und alles andere ausschließen. Dazu müssen Sie der Syntax -w oder -word-regexp hinzufügen. In diesem Fall sieht der Beispielbefehl folgendermaßen aus: $ grep -w gnu / usr / share / words .

Hinweis: Aus Grammatikgründen haben einige Befehle am Ende einen Punkt. Sie brauchen dieses Interpunktionszeichen nicht für grep. Schließen Sie es aus, wenn Sie den Befehl kopieren / einfügen.

Ist Grep case sensitive?

Bei allen grep-Befehlen wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden. Dies bedeutet, dass die Verwendung von Klein- und Großbuchstaben im Befehl selbst einen Unterschied macht. Sie können der Befehlszeile jedoch - i ( - Groß- / Kleinschreibung ignorieren ) hinzufügen und das System nach Wörtern in Groß- und Kleinschreibung suchen lassen.

Zum Beispiel könnte Ihr Eingabebefehl so aussehen: $ grep -i Zebra / usr / share / words . Damit kann die Ausgabe bei der Suche nach Zebras mit jeder Kombination von Groß- und Kleinbuchstaben übereinstimmen.

Linien Nummern

Verwenden Sie die Option –line-number oder einfach -n, um die Anzahl der Zeilen mit einer Zeichenfolge zu bestimmen, die einem bestimmten Suchmuster entspricht. Als Ergebnis erhalten Sie eine Standardausgabe mit einer Zeilennummer davor.

Der genaue Befehl könnte folgendermaßen aussehen: $ grep -n 10000 / etc / services . Bei der Ausführung werden alle Übereinstimmungen auf 10000 Zeilen ausgegeben. Schauen Sie sich das folgende Beispiel an:

10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp

Dateien in Ordnern

Sie können anstelle eines Dateinamens ein Sternchen hinter einen grep-Befehl setzen. Wenn Sie die Gnu- Kriterien erneut verwenden, sieht der Befehl wie folgt aus: $ grep gnu *. In der Ausgabe werden die Dateien aufgelistet, die gnu in enthalten. Beachten Sie, dass dieser Befehl eine Zeile zurückgibt.

Hinweis: Mit grep bezieht sich eine Zeile auf eine Folge von Zeichen, die bis zu einem bestimmten Umbruch ablaufen. Sofern Sie die Suche nicht verfeinern, enthält die Ausgabe möglicherweise ganze Absätze mit Informationen.

Machen Sie den nächsten Schritt mit Grep

Diese Anleitung kratzt nur die Oberfläche dessen, was Sie mit grep machen können. Es kann eine Weile dauern, bis alle Chancen und Ziele erreicht sind, aber die Syntax folgt einem relativ einfachen Prinzip. Und mit etwas Übung können Sie Ihre Suche mit oder ohne Dateinamen bis zur Perfektion verfeinern.

Wie grep ohne den Dateinamen