Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

egrep - Muster suchen

&pagelevel(4)&pagelevel

(search a file with an ERE pattern)


egrep liest Zeilen aus einer oder mehreren Dateien oder von der Standard-Eingabe 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 Standard-Ausgabe. Als Muster können Sie erweiterte reguläre Ausdrücke angeben (siehe Tabellen und Verzeichnisse, Reguläre Ausdrücke). Geben Sie mehrere Eingabedateien an, dann wird jeder Ausgabezeile der Name der betreffenden Datei vorangestellt.


Syntax


Format 1: egrep[ -bchilnvy] -e musterliste[ datei...]
Format 2: egrep[ -bchilnvy] -f musterdatei[ datei...]
Format 3: egrep[ -bchilnvy] musterliste[ datei...]

Die Formate werden gemeinsam beschrieben, da die Muster, nach denen egrep die Eingabezeilen vergleichen soll, entweder über musterliste oder über die Option -e musterliste oder -f musterliste angegeben werden. Eines dieser Argumente müssen Sie angeben, zwei zusammen oder alle drei sind nicht erlaubt.


Keine Option angegeben

egrep gibt alle Zeilen aus, die zu mindestens einem der in musterliste angegebenen Muster passen. Geben Sie mehrere Eingabedateien an, dann wird jeder Ausgabezeile der Name der Datei vorangestellt, aus der die Zeile gelesen wurde.


-b

(b - block)

Jeder Ausgabezeile wird die Nummer des Blocks vorangestellt, in dem sie enthalten ist. Die Blöcke, aus denen eine Datei besteht, sind je 512 byte groß und werden, mit 0 beginnend, durchnummerirt.

Option -b kann hilfreich sein, wenn die Nummern von Blöcken nach dem Kontext ermittelt werden sollen (siehe od, 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 ausgegeben.

-h

(h - hidden)

Beim Durchsuchen mehrerer Eingabedateien unterlässt egrep die Voranstellung der Dateinamen vor jeder Ausgabezeile.

-i oder -y

(i - ignore)

egrep unterscheidet beim Vergleich nicht zwischen Groß- und Kleinbuchstaben.

-l

(l - list)

egrep gibt nur die Namen der Dateien aus, die mindestens 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 nummerirt wird. Liest egrep von der Standard-Eingabe, bezieht sich die Zeilennummer auf die Standard-Eingabe.

-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.

-e musterliste

(e - expression) Diese Option brauchen Sie, 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.

-f musterdatei

(f - file) egrep liest die Musterliste aus der Datei musterdatei. Jede Zeile von musterdatei wird als ein erweiterter regulärer Ausdruck interpretiert.

musterliste

Liste von erweiterten regulären Ausdrücken, mit denen egrep die Eingabezeilen vergleichen soll (siehe Tabellen und Verzeichnisse, Reguläre Ausdrücke). Die regulä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 Ausdruck interpretiert.

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’.

Beginnt der erste Ausdruck in musterliste mit einem Bindestrich -, dann müssen Sie musterliste mit Option -e angeben oder die Optionsliste mit -- beenden, da sonst musterliste selbst als Option interpretiert wird.

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 Standard-Eingabe.

grep, fgrep und egrep

Die Kommandos grep, fgrep und egrep sind von der Oberfläche her weitgehend identisch. Im Folgenden sind die wichtigsten Unterschiede zwischen diesen Kommandos aufgeführt.

grep verarbeitet einfache reguläre Ausdrücke. Pro Aufruf können Sie nur einen einzigen regulären Ausdruck angeben.

fgrep verarbeitet nur Zeichenketten. Pro Aufruf können Sie jedoch mehrere Zeichenketten angeben: Die Zeichenketten geben Sie entweder direkt in der Aufrufzeile, getrennt durch Neue-Zeile-Zeichen, an oder Sie übergeben sie in einer Datei. fgrep kann effizient sehr viele Zeichenketten suchen: fgrep sucht jede einzelne Zeile nach allen Zeichenketten ab.

egrep verarbeitet erweiterte reguläre Ausdrücke. Diese umfassen u.a. die einfachen regulären Ausdrücke bis auf eine Ausnahme: Der einfache reguläre Ausdruck \(regausdruck\) hat bei erweiterten regulären Ausdrücken keine Sonderbedeutung und wird deshalb auch nicht von egrep verarbeitet. Pro Aufruf können Sie mehrere reguläre Ausdrücke, durch Neue-Zeile-Zeichen getrennt, angeben. egrep interpretiert diese Neue-Zeile-Zeichen wie einen senkrechten Strich (Zeichen für die Alternative, siehe Tabellen und Verzeichnisse, Reguläre Ausdrücke). Die regulären Ausdrücke geben Sie entweder direkt in der Aufrufzeile an, oder Sie übergeben sie in einer Datei.

Endestatus

0Zeilen gefunden
1keine Zeile gefunden
>1Syntaxfehler oder Datei kann nicht geöffnet werden.
Dieser Endestatus gilt auch dann, wenn in anderen Eingabedateien Zeilen gefunden wurden.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos egrep:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_COLLATE

Beeinflusst die Sortierreihenfolge.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel

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, kirschstr.3
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, 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


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, kirschstr.3


Mit obigem Aufruf erhalten Sie also alle Zeilen, die weder mit 1 beginnen noch mit 1 enden.
Dasselbe Ergebnis erhalten Sie mit folgendem 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, ausgegeben 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 enthalten, ausgegeben werden.

$ 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, kirschstr.3

Siehe auch

ed, fgrep, grep, sed