egrep(1) egrep(1)
NAME
egrep - Muster suchen (extended grep)
SYNTAX
egrep [option ...] [musterliste] [datei ...]
BESCHREIBUNG
egrep 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, schreibt egrep alle Zeilen,
die zu einem der Muster passen, auf die Standardausgabe.
Als Muster können Sie erweiterte 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 egrep 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 -c, -l und -q schließen sich gegenseitig aus.
Keine Option angegeben:
egrep gibt alle Zeilen aus, die zu mindestens einem der in
musterliste angegebenen Muster passen. Geben Sie mehrere Eingabe-
dateien an, dann wird jeder Ausgabezeile der Name der Datei vor-
angestellt, aus der die Zeile gelesen wurde.
-b (b - block) Jeder Ausgabezeile wird die Nummer des Blocks 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 od(1), Argument
offset].
-c (c - count) egrep gibt nur die Anzahl der gefundenen Zeilen aus
(das sind die Zeilen, die egrep ohne die Option -c ausgeben
würde, siehe Beispiel 4); die Zeilen selbst werden nicht ausgege-
ben.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
egrep(1) egrep(1)
-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 egrep die Eingabezeilen vergleichen soll. Sie
können mehrere Optionen -e angeben.
-f musterdatei
(f - file) egrep liest die Musterliste aus der Datei musterdatei.
Jede Zeile von musterdatei wird als ein erweiterter regulärer
Ausdruck interpretiert. Sie können mehrere Optionen -f angeben.
-i
-y (i - ignore) egrep unterscheidet beim Vergleich nicht zwischen
Groß- und Kleinbuchstaben.
-h (h - hidden) Beim Durchsuchen mehrerer Eingabedateien unterläßt
egrep die Voranstellung der Dateinamen vor jeder Ausgabezeile.
-l (l - list) egrep 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 5.)
Jeder Dateiname wird nur einmal ausgegeben. Die Zeilen selbst
gibt egrep nicht aus.
-n (n - number lines) Jeder Ausgabezeile wird die Zeilennummer aus
der betreffenden Eingabedatei vorangestellt, wobei von 1 an nume-
riert wird. Liest egrep von der Standardeingabe, bezieht sich die
Zeilennummer auf die Standardeingabe.
-q (q - quiet) egrep gibt nichts aus, sondern liefert nur den ent-
sprechenden Endestatus zurück.
-v (v - vice versa) egrep gibt alle Zeilen aus, die zu keinem der
angegebenen Muster passen.
Zusammen mit Option -c: egrep gibt nur die Anzahl solcher Zeilen
aus.
Zusammen mit Option -l: egrep gibt nur die Namen der Dateien aus,
die solche Zeilen enthalten.
Zusammen mit Option -q: egrep liefert nur den entsprechenden
Endestatus zurück.
-x (x - exact) egrep gibt nur solche Zeilen aus, die eines der ange-
gebenen Muster und sonst keine weiteren Zeichen enthalten.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
egrep(1) egrep(1)
Zusammen mit Option -c: egrep gibt nur die Anzahl solcher Zeilen
aus.
Zusammen mit Option -l: egrep gibt nur die Namen der Dateien aus,
die solche Zeilen enthalten.
Zusammen mit Option -q: egrep liefert nur den entsprechenden
Endestatus zurück.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn eines der
Argumente mit - beginnt.
musterliste
Liste von erweiterten regulären Ausdrücken, mit denen egrep die
Eingabezeilen vergleichen soll [siehe expressions(5)]. Die regu-
lären Ausdrücke trennen Sie durch Neue-Zeile-Zeichen. Ein Neue-
Zeile-Zeichen in musterliste wird wie ein senkrechter Strich |
(Zeichen für die Alternative) in einem erweiterten regulären Aus-
druck interpretiert (logisches ODER).
Reguläre Ausdrücke der Form (r|s) können Sie auch ohne Klammern
angeben: r|s (siehe Beispiel 1).
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 egrep durchsuchen soll. Pro Aufruf können Sie
mehrere Dateinamen angeben.
datei nicht angegeben: egrep liest die Eingabezeilen von der
Standardeingabe.
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.
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 erwei-
terten regulären Ausdrücken keine Sonderbedeutung und werden deshalb
auch nicht von egrep verarbeitet. egrep verhält sich wie grep -E.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
egrep(1) egrep(1)
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.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
LCCOLLATE beeinflußt die Sortierreihenfolge.
LCCTYPE bestimmt die Zeichenklassen und die Zeichenkonvertierung
(Option -i/-y).
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.
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
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
egrep(1) egrep(1)
Beispiel 1
Zeilen ausgeben, die zu einem Muster passen (keine Option und Option
-i):
$ egrep 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:
$ egrep -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. Zeilen ausgeben, die die Zeichenkette Holzinger oder
Wanninger enthalten:
$ egrep '(Holz|Wann)inger' kunden1 kunden2
kunden1:080685 999.98 20 LE Art. 038 Fa. Holzinger
kunden1:120387 1240.25 3 LE Art. 023 Fa. Wanninger
kunden1:180588 330.87 1 LE Art. 332 Fa. Wanninger
Statt des regulären Ausdrucks (Holz|Wann)inger können Sie auch den
folgenden regulären Ausdruck angeben:
(Holzinger|Wanninger)
Hier können Sie die Klammern weglassen:
Holzinger|Wanninger
Statt des senkrechten Strichs im letzten Ausdruck Holzinger|Wanninger
können Sie auch ein Neue-Zeile-Zeichen angeben (siehe Beispiel 2).
Beispiel 2
Mehrere Muster angeben (keine Option und Option -f):
$ egrep '^1
> 1$' kunden1 kunden2
kunden1:120387 1240.25 3 LE Art. 023 Fa. Wanninger
kunden1:180588 330.87 1 LE Art. 332 Fa. Wanninger
kunden2:hinterhuber berta, rosenheim, zugspitzstr.1
Sie können die beiden Muster auch in eine Datei namen schreiben (je
Muster eine Zeile) und egrep folgendermaßen aufrufen:
$ egrep -f namen kunden1 kunden2
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
egrep(1) egrep(1)
Dasselbe Ergebnis erhalten Sie, wenn Sie das Neue-Zeile-Zeichen, das
die Muster ^1 und 1$ trennt, durch einen senkrechten Strich ersetzen:
$ egrep '^1|1$' kunden1 kunden2
Beispiel 3
Zeilen ausgeben, die zu keinem der angegebenen Muster passen (Option
-v):
$ egrep -v '^1
> 1$' kunden1 kunden2
kunden1:080685 999.98 20 LE Art. 038 Fa. Holzinger
kunden2:wanninger herbert, muenchen 5, kirschstr.3
Mit obigem Aufruf erhalten Sie also alle Zeilen, die weder mit 1
beginnen noch mit 1 enden. Dasselbe Ergebnis erhalten Sie mit folgen-
dem Aufruf (siehe Beispiel 2):
$ egrep -v '^1|1$' kunden1 kunden2
Beispiel 4
Anzahl der gefundenen Zeilen ausgeben (Option -c):
Zuerst soll für jede Eingabedatei die Anzahl der Zeilen, die mit einer
1 beginnen, ausgegeben werden.
$ egrep -c '^1' kunden1 kunden2
kunden1:2
kunden2:0
Nun soll die Anzahl der Zeilen, die nicht mit einer 1 beginnen, ausge-
geben werden.
$ egrep -c -v '^1' kunden1 kunden2
kunden1:1
kunden2:2
Beispiel 5
Nur Dateinamen ausgeben (Option -l):
Zuerst sollen die Namen der Dateien, die Zeilen mit einer 1 am Anfang
enthalten, ausgegeben werden.
$ egrep -l '^1' kunden1 kunden2
kunden1
Nun sollen die Namen der Dateien, die Zeilen ohne 1 am Anfang enthal-
ten, ausgegeben werden.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
egrep(1) egrep(1)
$ egrep -l -v '^1' kunden1 kunden2
kunden1
kunden2
Beispiel 6
Gefundene Zeilen mit Zeilennummer ausgeben (Option -n):
$ egrep -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), fgrep(1), grep(1), sed(1), sh(1), expressions(5).
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98