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 Musterliste ... ] [ -f Musterdatei ... ] | Musterliste ... } [ 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, die in der Shell eine Sonderbedeutung haben ($, *, [, |, ^, (, ), \ ), müssen in Anführungszeichen gesetzt werden, wenn sie im Parameter Muster vorkommen. Wenn der Parameter Muster keine einfache Zeichenfolge ist, müssen Sie gewöhnlich das gesamte Muster in einfache Anführungszeichen setzen. In einem Ausdruck wie [a-z] gibt das Minuszeichen (-) einen Bereich entsprechend der aktuellen Sortierfolge an. Eine Sortierfolge kann Äquivalenzklassen für Zeichenbereiche definieren. Wenn Sie keine Dateien angeben, geht grep von der Standardeingabe aus.

Anmerkungen:
  1. Führen Sie den Befehl grep nicht für eine Gerätedatei aus, da dies zu unvorhersehbaren Ergebnissen führt. Eingabezeilen dürfen kein Nullzeichen enthalten.
  2. Eingabedateien sollten mit dem Zeilenvorschubzeichen enden.
  3. Das Zeilenvorschubzeichen wird von den regulären Ausdrücken nicht gefunden.
  4. Einige Flags können gleichzeitig angegeben werden, einige Flags überschreiben einander. 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 Plattenblocknummern nach Kontext zu suchen. 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.
Anmerkung: Der Befehl grep dem Flag -E entspricht dem Befehl egrep mit der Ausnahme, dass Fehlernachrichten und Verwendungshinweise verschieden sind und das Flag -s- anders funktioniert.
-e Musterliste 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.
Anmerkung: Der Befehl grep mit dem Flag -F entspricht dem Befehl fgrep mit der Ausnahme, dass Fehlernachrichten und Verwendungshinweise verschieden sind und das Flag -s- anders funktioniert.
-f Musterdatei 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 der Pfadname von (Standardeingabe) zurückgegeben. 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 (d. h. keine weiteren Zeichen enthalten).
-y Ignoriert die Groß-/Kleinschreibung von Buchstaben bei Vergleichen.
Musterliste 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

Diese Befehle geben 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 auf eine Datei konnte nicht zugegriffen werden (selbst wenn Übereinstimmungen gefunden wurden).

Beispiele

  1. Geben Sie Folgendes ein, um ein Muster zu verwenden, das einige der Mustererkennungszeichen (*, ^, ?, [, ], \(, \), \{ und \}) enthält:
    grep  "^[a-zA-Z]"  pgm.s 
    Dieser Befehl zeigt jede Zeile in pgm.s an, an, deren erstes Zeichen ein Buchstabe ist.
  2. Geben Sie Folgendes ein, um alle Zeilen anzuzeigen, die keinem Muster entsprechen:
    grep   -v  "^#" pgm.s
    Dieser Befehl zeigt jede Zeile in pgm.s an, deren erstes Zeichen nicht das Nummernzeichen (#) ist.
  3. Geben Sie Folgendes ein, um alle Zeilen in der Datei file1 anzuzeigen, die der Zeichenfolge abc oder xyz entsprechen:
    grep   -E  "abc|xyz"  file1
  4. Geben Sie Folgendes ein, um nach einem Dollarzeichen ($) in der Datei test2 zu suchen:
    grep \\$ test2
    Die Zeichen \\ (doppelter Backslash) sind erforderlich, um die Shell zu zwingen, die Zeichen \$ (einzelner Backslash, Dollarzeichen) an den Befehl grep zu übergeben. Das Zeichen \ (einzelner Backslash) weist den Befehl grep an, das folgende Zeichen (in diesem Beispiel das Zeichen $) als Literal und nicht als Ausdruckszeichen zu behandeln. 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.