Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ grep(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ed(1)

egrep(1)

fgrep(1)

sed(1)

sh(1)

stdio(3S)

expressions(5)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026