(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 - 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 - 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 - hidden) Beim Durchsuchen mehrerer Eingabedateien unterlässt egrep die Voranstellung der Dateinamen vor jeder Ausgabezeile.
(i - ignore) egrep unterscheidet beim Vergleich nicht zwischen Groß- und Kleinbuchstaben.
(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 - 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 - vice versa) egrep gibt alle Zeilen aus, die zu keinem der angegebenen Muster passen. Zusammen mit Option -c: Zusammen mit Option -l:
(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 - file) egrep liest die Musterliste aus der Datei musterdatei. Jede Zeile von musterdatei wird als ein erweiterter regulärer Ausdruck interpretiert.
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
Name der Datei, die egrep durchsuchen soll. Pro Aufruf können Sie mehrere Dateinamen angeben. datei nicht angegeben: |
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
0 | Zeilen gefunden |
1 | keine Zeile gefunden |
>1 | Syntaxfehler 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):
Wenn Sie auch Zeilen mit kleingeschriebenem wanninger ausgeben lassen möchten, geben Sie ein:
Kompliziertere Muster stellen Sie mit Hilfe von regulären Ausdrücken dar, z.B.: Zeilen ausgeben, die die Zeichenkette Holzinger oder Wanninger enthalten:
Statt des regulären Ausdrucks (Holz|Wann)inger können Sie auch den folgenden regulären Ausdruck angeben:
Hier können Sie die Klammern weglassen:
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):
Sie können die beiden Muster auch in eine Datei namen schreiben (je Muster eine Zeile) und egrep folgendermaßen aufrufen:
Dasselbe Ergebnis erhalten Sie, wenn Sie das Neue-Zeile-Zeichen, das die Muster ^1 und 1$ trennt, durch einen senkrechten Strich ersetzen:
|
Beispiel 3
Zeilen ausgeben, die zu keinem der angegebenen Muster passen (Option -v):
Mit obigem Aufruf erhalten Sie also alle Zeilen, die weder mit 1 beginnen noch mit 1 enden.
|
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.
Nun soll die Anzahl der Zeilen, die nicht mit einer 1 beginnen, ausgegeben werden.
|
Beispiel 5
Nur Dateinamen ausgeben (Option -l): Zuerst sollen die Namen der Dateien, die Zeilen mit einer 1 am Anfang enthalten, ausgegeben werden.
Nun sollen die Namen der Dateien, die Zeilen ohne 1 am Anfang enthalten, ausgegeben werden.
|
Beispiel 6
Gefundene Zeilen mit Zeilennummer ausgeben (Option -n):
|
Siehe auch
ed, fgrep, grep, sed |