grep(1) grep(1)
NAME
grep - Muster suchen (global regular expression print)
SYNTAX
grep [option ...] [musterliste] [datei ...]
BESCHREIBUNG
grep liest Zeilen aus einer oder mehreren Dateien oder von der Stan-
dardeingabe und vergleicht die Zeilen mit den angegebenen Mustern. Ist
mittels Optionen nichts anderes angegeben, so schreibt grep alle Zei-
len, die zu einem der Muster passen, auf die Standardausgabe.
Als Muster können Sie einfache reguläre Ausdrücke angeben [siehe
expressions(5)].
Geben Sie mehrere Eingabedateien an, dann wird jeder Ausgabezeile der
Name der betreffenden Datei vorangestellt.
Die Muster, mit denen grep die Eingabezeilen vergleichen soll, geben
Sie entweder über musterliste oder über die Option -e musterliste oder
über die Option -f musterdatei an. Mindestens eines dieser drei Argu-
mente müssen Sie angeben, mehrere zusammen sind erlaubt. Wenn Sie meh-
rere dieser Argumente angeben, werden diese mit einem logischen ODER
kombiniert.
OPTIONEN
Die Optionen -E und -F schließen sich gegenseitig aus, ebenso die
Optionen -c, -l und -q.
Keine Option angegeben:
grep gibt alle Zeilen aus, die zu mindestens einem der in muster-
liste angegebenen Muster passen. Geben Sie mehrere Eingabedateien
an, dann wird jeder Ausgabezeile der Name der Datei vorange-
stellt, aus der die Zeile gelesen wurde.
-E (E - extended) Sie können als Muster erweiterte reguläre Aus-
drücke angeben. grep -E verhält sich weitgehend wie egrep.
-F (F - fixed) Alle Muster werden als Zeichenketten interpretiert.
grep -F verhält sich wie fgrep.
-b (b - block) Jeder Ausgabezeile wird die Nummer des Blockes voran-
gestellt, in dem sie enthalten ist.
Die Blöcke, aus denen eine Datei besteht, sind je 512 Byte groß
und werden, mit 0 beginnend, durchnumeriert.
Option -b kann hilfreich sein, wenn die Nummern von Blöcken nach
dem Kontext ermittelt werden sollen [siehe z. B. das Kommando
od(1), Argument offset].
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
grep(1) grep(1)
-c (c - count) grep gibt nur die Anzahl der gefundenen Zeilen aus
(das sind die Zeilen, die grep ohne die Option -c ausgeben würde,
siehe Beispiel 3); die Zeilen selbst werden nicht ausgegeben.
-e musterliste
(e - expression) Gleichbedeutend mit musterliste. Die Option -e
sollten Sie immer angeben, wenn der erste Ausdruck in musterliste
mit einem Bindestrich - beginnt. Zusammen mit -e wird eine solche
Musterliste nicht als Option interpretiert, sondern als Liste von
Mustern, mit denen grep die Eingabezeilen vergleichen soll. Sie
können mehrere Optionen -e angeben.
-f musterdatei
(f - file) grep liest die Musterliste aus der Datei musterdatei.
Jede Zeile von musterdatei wird als ein einfacher regulärer Aus-
druck interpretiert. Sie können meherere Optionen -f angeben.
-i (i - ignore) grep unterscheidet beim Vergleich nicht zwischen
Groß- und Kleinbuchstaben.
-h (h - hidden) Beim Durchsuchen mehrerer Eingabedateien unterläßt
grep die Voranstellung der Dateinamen vor jeder Ausgabezeile.
-l (l - list) grep gibt nur die Namen der Dateien aus, die minde-
stens eine der gefundenen Zeilen enthalten. (Das sind die Zeilen,
die grep ohne die Option -l ausgeben würde, siehe Beispiel 4.)
Jeder Dateiname wird nur einmal ausgegeben. Die Zeilen selbst
gibt grep nicht aus.
-n (n - number lines) Jeder Ausgabezeile wird die Zeilennummer aus
der betreffenden Eingabedatei vorangestellt, wobei von 1 an nume-
riert wird. Liest grep von der Standardeingabe, bezieht sich die
Zeilennummer auf die Standardeingabe.
-q (q - quiet) grep gibt nichts aus, sondern liefert nur den ent-
sprechenden Endestatus zurück.
-r (r - recursive) Jeder Dateiname, der ein Verzeichnisname ist,
wird rekursiv durchsucht. Das bedeutet, das alle Dateien und Ver-
zeichnisse, die in diesem Verzeichnis enthalten sind, berücksich-
tigt werden.
-s (s - silent) Fehlermeldungen, die sich auf nicht vorhandene
Dateien oder auf Dateien, für die Sie kein Leserecht haben,
beziehen, werden unterdrückt.
-v (v - vice versa) grep gibt alle Zeilen aus, die nicht zu dem
angegebenen Muster passen.
Zusammen mit Option -c: grep gibt nur die Anzahl solcher Zeilen
aus.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
grep(1) grep(1)
Zusammen mit Option -l: grep gibt nur die Namen der Dateien aus,
die solche Zeilen enthalten.
Zusammen mit Option -q: grep liefert nur den entsprechenden Ende-
status zurück.
-x (x - exact) grep gibt nur solche Zeilen aus, die eines der ange-
gebenen Muster und sonst keine weiteren Zeichen enthalten.
Zusammen mit Option -c: grep gibt nur die Anzahl solcher Zeilen
aus.
Zusammen mit Option -l: grep gibt nur die Namen der Dateien aus,
die solche Zeilen enthalten.
Zusammen mit Option -q: grep liefert nur den entsprechenden Ende-
status zurück.
-y grep unterscheidet beim Vergleich nicht zwischen Groß- und Klein-
buchstaben.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn das erste
Argument mit - beginnt.
musterliste
Liste von einfachen regulären Ausdrücken, mit dem grep die Einga-
bezeilen vergleichen soll [siehe expressions(5)]. Die regulären
Ausdrücke trennen Sie durch Neue-Zeile-Zeichen. Ein Neue-Zeile-
Zeichen in musterliste wirkt als logisches ODER.
Enthält musterliste Neue-Zeile-Zeichen oder sonstige Zeichen, die
für die Shell eine Sonderbedeutung haben, dann schließen Sie
musterliste in Hochkommas ein: 'musterliste'.
datei
Name der Datei, die grep durchsuchen soll. Pro Aufruf können Sie
mehrere Dateinamen angeben.
datei nicht angegeben: grep liest die Eingabezeilen von der Stan-
dardeingabe.
grep, fgrep und egrep
Die Kommandos grep, fgrep und egrep sind von der Oberfläche her weit-
gehend identisch. Im folgenden sind die wichtigsten Unterschiede zwi-
schen diesen Kommandos aufgeführt.
grep verarbeitet einfache reguläre Ausdrücke, falls nicht die Optionen
-E oder -F angegeben sind.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
grep(1) grep(1)
fgrep verarbeitet nur Zeichenketten. fgrep kann effizient sehr viele
Zeichenketten suchen: fgrep sucht jede einzelne Zeile nach allen Zei-
chenketten ab. fgrep verhält sich weitgehend wie grep -F.
egrep verarbeitet erweiterte reguläre Ausdrücke. Diese umfassen u. a.
die einfachen regulären Ausdrücke bis auf folgende Ausnahme: Die ein-
fachen regulären Ausdrücke \(regausdruck\) und \{...\} haben bei
erweiterten regulären Ausdrücken keine Sonderbedeutung und werden des-
halb auch nicht von egrep verarbeitet. egrep verhält sich wie grep -E.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
LCCTYPE bestimmt die Zeichenklassen und die Zeichenkonvertierung
(Option -i/-y).
LCCOLLATE beeinflußt die Sortierreihenfolge.
Wenn LCMESSAGES, LCCOLLATE oder LCCTYPE nicht oder als leere Zei-
chenkette definiert ist, wird der Wert von LANG als Standardwert für
die jeweils nicht gesetzte oder leere Variable herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
ENDESTATUS
0 Zeilen gefunden
1 keine Zeile gefunden
>1 Syntaxfehler oder "Datei kann nicht geöffnet werden". Dieser Ende-
status gilt auch dann, wenn in anderen Eingabedateien Zeilen
gefunden wurden.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
grep(1) grep(1)
BEISPIELE
Grundlage für alle Beispiele sind die Dateien kunden1 und kunden2. Sie
haben folgenden Inhalt:
kunden1:
080685 999.98 20 LE Art. 038 Fa. Holzinger
120387 1240.25 3 LE Art. 023 Fa. Wanninger
180588 330.87 1 LE Art. 332 Fa. Wanninger
kunden2:
hinterhuber berta, rosenheim, zugspitzstr.1
wanninger herbert, muenchen 5, kirschstr.3
Beispiel 1
Zeilen ausgeben, die zu dem angegebenen Muster passen (keine Option
und Option -i):
$ grep Wanninger kunden1 kunden2
kunden1:120387 1240.25 3 LE Art. 023 Fa. Wanninger
kunden1:180588 330.87 1 LE Art. 332 Fa. Wanninger
Wenn Sie auch Zeilen mit kleingeschriebenem wanninger ausgeben lassen
möchten, geben Sie ein:
$ grep -i wanninger kunden1 kunden2
kunden1:120387 1240.25 3 LE Art. 023 Fa. Wanninger
kunden1:180588 330.87 1 LE Art. 332 Fa. Wanninger
kunden2:wanninger herbert, muenchen 5, kirschstr.3
Kompliziertere Muster stellen Sie mit Hilfe von regulären Ausdrücken
dar, z. B.:
Einträge des Jahres 1987 in der Datei kunden1 ausgeben - das sind alle
Zeilen, die in der 5. und 6. Spalte die Zahl 87 enthalten:
$ grep '^....87' kunden1
120387 1240.25 3 LE Art. 023 Fa. Wanninger
Beispiel 2
Zeilen ausgeben, die nicht zu dem angegebenen Muster passen (Option
-v):
$ grep -v '^1' kunden1 kunden2
kunden1:080685 999.98 20 LE Art. 038 Fa. Holzinger
kunden2:hinterhuber berta, rosenheim, zugspitzstr.1
kunden2:wanninger herbert, muenchen 5, kirschstr.3
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
grep(1) grep(1)
Beispiel 3
Anzahl der gefundenen Zeilen ausgeben (Option -c):
Zuerst soll für jede Eingabedatei die Anzahl der Zeilen, die mit einer
1 beginnen, ausgegeben werden.
$ grep -c '^1' kunden1 kunden2
kunden1:2
kunden2:0
Nun soll die Anzahl der Zeilen, die nicht mit einer 1 beginnen, ausge-
geben werden.
$ grep -c -v '^1' kunden1 kunden2
kunden1:1
kunden2:2
Beispiel 4
Nur Dateinamen ausgeben (Option -l):
Zuerst sollen die Namen der Dateien, die Zeilen mit einer 1 am Anfang
enthalten, ausgegeben werden.
$ grep -l '^1' kunden1 kunden2
kunden1
Nun sollen die Namen der Dateien, die Zeilen ohne eine 1 am Anfang
enthalten, ausgegeben werden.
$ grep -l -v '^1' kunden1 kunden2
kunden1
kunden2
Beispiel 5
Gefundene Zeilen mit Zeilennummer ausgeben (Option -n):
$ grep -n -i wanninger kunden1 kunden2
kunden1:2:120387 1240.25 3 LE Art. 023 Fa. Wanninger
kunden1:3:180588 330.87 1 LE Art. 332 Fa. Wanninger
kunden2:2:wanninger herbert, muenchen 5, kirschstr.3
SIEHE AUCH
ed(1), egrep(1), fgrep(1), sed(1), sh(1), stdio(3S), expressions(5).
Leitfaden für Programmierer, Internationalisierung - Lokalisierung.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98