Befehl "grep"

Zweck

Sucht nach einem Muster in einer Datei.

Syntax

grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ][ -u ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [Trennzeichen ] ] { [ -e PatternList... ] [ -f PatternFile... ] | PatternList ... } [ Datei ... ]

Beschreibung

Der Befehl grep sucht nach dem mit dem Parameter Muster angegebenen Muster und schreibt jede übereinstimmende Zeile in die Standardausgabe. Die Muster sind begrenzte reguläre Ausdrücke im Stil des Befehls ed oder egrep. Der Befehl grep verwendet einen kompakten nichtdeterministischen Algorithmus.

Der Befehl grep zeigt den Namen der Datei an, die die übereinstimmende Zeile enthält, wenn Sie mehrere Namen mit dem Parameter Datei angeben. Zeichen mit Sonderbedeutung in der Shell ($, *, [, |, ^, (, ), \) müssen in Anführungszeichen gesetzt werden, wenn sie im Parameter Muster enthalten sind. Wenn der Parameter Muster keine einfache Zeichenfolge ist, müssen Sie gewöhnlich das gesamte Muster in einfache Anführungszeichen einschließen. In einem Ausdruck wie[a-z]das - (Minuszeichen) cml gibt einen Bereich an, der der aktuellen Sortierreihenfolge entspricht. Eine Sortierfolge kann Äquivalenzklassen zur Verwendung in Zeichenbereichen definieren. Wenn Sie keine Dateien angeben, geht grep von der Standardeingabe aus.

Hinweise:
  1. Führen Sie den Befehl grep nicht für Gerätedateien aus, weil dies zu unvorhersehbaren Ergebnissen führt. Eingabezeilen dürfen kein Nullzeichen enthalten.
  2. Eingabedateien müssen mit dem Zeilenvorschubzeichen enden.
  3. Das Zeilenvorschubzeichen wird von den regulären Ausdrücken nicht gefunden.
  4. Einige Flags können gleichzeitig angegeben werden, andere Flags überschreiben andere. Die Option -l hat beispielsweise Vorrang vor allen anderen Flags. Wenn Sie die Flags -E und -F angeben, hat das zuletzt angegebene Vorrang.

Flags

Element Beschreibung
-b Stellt jeder Zeile die Nummer des Blocks voran, in dem sie gefunden wurde. Verwenden Sie dieses Flag, um die Plattenblocknummern anhand des Kontextes zu ermitteln. Das Flag -b kann nicht mit Eingaben aus der Standardeingabe oder aus Pipes verwendet werden.
-c Zeigt nur die Anzahl der übereinstimmenden Zeilen an.
-E Behandelt jedes angegebene Muster als erweiterten regulären Ausdruck. Ein Nullwert für einen erweiterten regulären Ausdruck entspricht jeder Zeile.
Hinweis: Der grep-Befehl mit dem Flag -E entspricht dem egrep-Befehl, mit dem Unterschied, dass die Fehler- und Benutzungsmeldungen unterschiedlich sind und das Flag -s anders funktioniert.
-e PatternList Gibt ein oder mehrere Suchmuster an. Dieses Flag funktioniert wie ein einfaches Muster, ist aber hilfreich, wenn das Muster mit einem Minuszeichen (-) beginnt. Muster müssen durch Zeilenvorschubzeichen voneinander getrennt werden. Ein Nullmuster kann mit zwei aufeinanderfolgenden Zeilenvorschubzeichen oder einem Anführungszeichen gefolgt von einem Zeilenvorschubzeichen ("\n) angegeben werden. Jedes Muster wird wie ein einfacher regulärer Ausdruck behandelt, sofern nicht auch das Flag -E oder das Flag -F angegeben wird. Es können mehrere Flags -e und -f mit dem Befehl grep angegeben werden. Beim Abgleich der Zeilen werden alle angegebenen Muster verwendet, aber die Reihenfolge der Auswertung ist nicht angegeben.
-F Behandelt jedes angegebene Muster als Zeichenfolge und nicht als regulären Ausdruck. Eine Nullzeichenfolge entspricht jeder Zeile.
Hinweis: Der Befehl grep mit dem Flag -F ist derselbe wie der Befehl fgrep, mit dem Unterschied, dass die Fehler- und Benutzungsmeldungen unterschiedlich sind und das Flag -s anders funktioniert.
-f PatternFile Gibt eine Datei an, die Suchmuster enthält. Die einzelnen Muster müssen durch Zeilenvorschubzeichen voneinander getrennt werden und eine leere Zeile wird als Nullmuster betrachtet. Jedes Muster wird wie ein einfacher regulärer Ausdruck behandelt, sofern nicht auch das Flag -E oder das Flag -F angegeben wird.
-H Verhindert, dass der Name der Datei, die die übereinstimmende Zeile enthält, an diese Zeile angefügt wird. Unterdrückt Dateinamen, wenn mehrere Dateien angegeben werden.
-H Wenn Sie die Option -r oder -R angeben und einen symbolischen Link, der auf eine Datei des Typs Verzeichnis verweist, in der Befehlszeile angegeben wird, durchsucht grep die Dateien des mit dem symbolischen Link referenzierten Verzeichnisses und alle Dateien in der Dateihierarchie darunter.
-i Ignoriert die Groß-/Kleinschreibung von Buchstaben bei Vergleichen.
Element Beschreibung
-l Listet nur die Namen von Dateien (einmal) auf, die übereinstimmende Zeilen enthalten. Die einzelnen Dateinamen werden durch Zeilenvorschubzeichen voneinander getrennt. Wenn die Standardeingabe durchsucht wird, wird ein Pfadname von(StandardInput)zurückgegeben wird. Das Flag -l mit einer beliebigen Kombination der Flags -c und -n verhält sich wie das Flag -l allein.
-L Wenn Sie die Option -r oder -R angeben und einen symbolischen Link, der auf eine Datei des Typs Verzeichnis verweist, in der Befehlszeile angegeben oder beim Traversieren einer Dateihierarchie gefunden wird, durchsucht grep die Dateien des mit dem symbolischen Link referenzierten Verzeichnisses und alle Dateien in der Dateihierarchie darunter. Wenn Sie -H und -L angeben, wird die letzte in der Befehlszeile angegebene Option wirksam.
-N Stellt jeder Zeile die relative Zeilennummer in der Datei voran. Jede Datei beginnt mit Zeile 1 und der Zeilenzähler wird für jede verarbeitete Datei zurückgesetzt.
-p[Trennzeichen] Zeigt den gesamten Absatz an, der übereinstimmende Zeilen enthält. Absätze werden durch die mit dem Parameter Trennzeichen angegebenen Absatztrennzeichen begrenzt, bei denen es sich um Muster handelt, die dasselbe Format wie das Suchmuster haben. Zeilen, die die Absatztrennzeichen enthalten, werden nur als Trennzeichen verwendet und nicht in die Ausgabe eingeschlossen. Das Standardabsatztrennzeichen ist eine leere Zeile.
-q Unterdrückt das Schreiben in die Standardausgabe, unabhängig davon, ob übereinstimmende Zeilen gefunden werden. Beendet die Ausführung mit dem Status null, wenn eine Eingabezeile ausgewählt wird. Das Flag -q mit einer beliebigen Kombination der Flags -c, -l und -n verhält sich wie das Flag -q allein.
-r Durchsucht die Verzeichnisse rekursiv. Standardmäßig werden Verbindungen zu Verzeichnissen verfolgt.
-R Durchsucht die Verzeichnisse rekursiv. Standardmäßig werden Verbindungen zu Verzeichnissen nicht verfolgt.
-s Unterdrückt Fehlernachrichten, die normalerweise für nicht vorhandene oder nicht lesbare Dateien geschrieben werden. Andere Fehlernachrichten werden nicht unterdrückt.
-u Bewirkt, dass die Ausgabe nicht gepuffert wird.
-v Zeigt alle Zeilen an, die nicht mit dem angegebenen Muster übereinstimmen.
-w Führt eine Wortsuche durch.
-x Zeigt Zeilen an, die dem angegebenen Muster exakt entsprechen (ohne zusätzliche Zeichen).
-y Ignoriert die Groß-/Kleinschreibung von Buchstaben bei Vergleichen.
PatternList Gibt ein oder mehrere Muster an, die während der Suche verwendet werden sollen. Die Muster werden so behandelt, als wären sie mit dem Flag -e angegeben worden.
Datei Gibt den Namen einer Datei an, die nach Mustern durchsucht werden soll. Wenn Sie keine Variable Datei angeben, wird die Standardeingabe verwendet.

Exitstatus

Dieser Befehl gibt die folgenden Exitwerte zurück:

Element Beschreibung
0 Es wurde eine Übereinstimmung gefunden.
1 Es wurde keine Übereinstimmung gefunden.
>1 Es wurde ein Syntaxfehler gefunden oder eine Datei war nicht zugänglich (selbst wenn Übereinstimmungen gefunden wurden).

Beispiele

  1. Um ein Muster zu verwenden, das einige der musterübereinstimmenden Zeichen *, ^, ?, [, ], \(, \), \{{, and \} enthält, geben Sie ein:
    grep  "^[a-zA-Z]"  pgm.s 
    Dies zeigt jede Zeile inpgm.sderen erstes Zeichen ein Buchstabe ist.
  2. Um alle Zeilen anzuzeigen, die nicht mit einem Muster übereinstimmen, geben Sie ein:
    grep   -v  "^#" pgm.s
    Dies zeigt jede Zeile inpgm.sderen erstes Zeichen nicht ein#(Pfund-Zeichen).
  3. Zur Anzeige aller Zeilen in derfile1datei, die entweder mit demabcoderxyzzeichenfolge eingeben:
    grep   -E  "abc|xyz"  file1
  4. Für die Suche nach einem$(Dollarzeichen) in der Datei mit dem Namentest2eingeben:
    grep \\$ test2
    Der\\(doppelter Backslash) sind notwendig, um die Shell zu zwingen, ein\$(einfacher Backslash, Dollarzeichen) an den Befehl grep. Der\(einfacher Backslash) weist den grep-Befehl an, das folgende Zeichen zu behandeln (in diesem Beispiel das$) als literales Zeichen und nicht als Ausdruckszeichen. Verwenden Sie den Befehl fgrep, um die Verwendung erforderlicher Escapezeichen (z. B. den Backslash) zu vermeiden.
  5. Geben Sie Folgendes ein, um das Verzeichnis /tmp rekursiv zu durchsuchen, um Dateien zu finden, die das Wort IBM enthalten, ohne die Verbindungen, die auf Verzeichnisse verweisen, rekursiv zu verfolgen:
    grep –R IBM /tmp
    ODER
    grep –r -H IBM /tmp
  6. Geben Sie Folgendes ein, um das Verzeichnis /tmp rekursiv zu durchsuchen, um Dateien zu finden, die das Wort IBM enthalten, und auch die Verbindungen rekursiv zu verfolgen:
    grep –r IBM /tmp
    ODER
    grep -R -L IBM /tmp

Dateien

Element Beschreibung
/usr/bin/grep Enthält den Befehl grep.