Provided by: manpages-de_0.5-2ubuntu1_all bug

BEZEICHNUNG

       grep, egrep, fgrep - finde Suchmuster in Dateien

ÜBERSICHT

       grep [Optionen] MUSTER [DATEI...]
       grep [Optionen] [-e MUSTER | -f DATEI] [DATEI...]

BESCHREIBUNG

       Grep  sucht  in den angegebenen DATEIen nach Zeilen, die auf das MUSTER
       passen.  Sind keine Dateien oder der spezielle Dateiname  -  angegeben,
       so  liest  grep  statt  dessen  von  der Standardeingabe.  Sofern nicht
       anders spezifiziert, gibt es genau  die  Zeilen  aus,  die  auf  MUSTER
       passen.

       Es  existieren  noch die beiden Programmvarianten egrep und fgrep.  Sie
       verhalten sich identisch zum normalen  grep,  das  mit  der  Option  -E
       beziehungsweise -F aufgerufen wurde.

OPTIONEN

       -A NUM, --after-context=NUM
              Zeige  NUM  Zeilen  Kontext  im Anschluss an eine auf das Muster
              passende Zeile an.

       -a, --text
              Verarbeite eine  Binärdatei  als  wäre  sie  gewöhnlicher  Text;
              dieser  Schalter  bedeutet  dasselbe  wie  die  Option --binary-
              files=text.

       -B NUM, --before-context=NUM
              Zeige NUM Zeilen Kontext vor  einer  auf  das  Muster  passenden
              Zeile an.

       -C [NUM], -NUM, --context[=NUM]
              Zeige  je  NUM  Zeilen Kontext vor und nach einer auf das Muster
              passenden Zeile an.  Zwei Zeilen Kontext sind voreingestellt.

       -b, --byte-offset
              Zeige vor jeder Ausgabezeile den Abstand in Bytes innerhalb  der
              Eingabedatei an.

       --binary-files=TYP
              Falls die ersten Bytes einer Datei anzeigen, dass sie Binärdaten
              enthält, soll angenommen werden, dass es sich um eine Datei  vom
              Typ  TYP handelt.  Mögliche Typen sind binary, text und without-
              match.  In der Einstellung binary  zeigt  grep  auf  das  Muster
              passende  Zeilen  nicht  direkt  an, sondern gibt lediglich eine
              Meldung aus, dass in der Datei Treffer gefunden wurden.   Dieses
              Verhalten  ist voreingestellt.  In der Einstellung without-match
              überspringt  grep  Binärdateien,  ohne  dort  nach  Treffern  zu
              suchen.  Der Schalter -I bewirkt dasselbe.  Vorsicht ist mit der
              Einstellung text geboten, da  grep  hier  die  passenden  Zeilen
              direkt  anzeigt.   Das  kann Probleme bereiten, wenn die Ausgabe
              auf eine Konsole geleitet wird  und  deren  Treiber  manche  der
              Binärdaten  als  Steuerzeichen interpretiert.  Dieser Modus kann
              auch über den Schalter -a eingestellt werden.

       -c, --count
              Statt die passenden Zeilen  direkt  anzuzeigen,  wird  lediglich
              ihre  Anzahl  pro  Eingabedatei  ausgegeben.  Ist zusätzlich die
              Option -v, --invert-match (siehe unten)  angegeben,  zählt  grep
              die Zeilen ohne Treffer zusammen.

       -d AKTION, --directories=AKTION
              Handelt es sich bei einer der Eingabedateien um ein Verzeichnis,
              so  soll  die  Aktion  AKTION  ausgeführt  werden,  um   es   zu
              verarbeiten.   In  der  Standardeinstellung  read liest grep das
              Verzeichnis ein, als wäre es eine gewöhnliche Datei.  Ist AKTION
              auf   skip   gesetzt,   so  werden  Verzeichnis  stillschweigend
              übersprungen.  Steht AKTION auf recurse oder wurde der  Schalter
              -r  benutzt,  so  sucht  grep  rekursiv  durch sämtliche Dateien
              unterhalb jedes Verzeichnisses.

       -E, --extended-regexp
              MUSTER soll als erweiterter  regulärer  Ausdruck  (siehe  unten)
              interpretiert werden.

       -e MUSTER, --regexp=MUSTER
              Verwende   MUSTER   als  das  Suchmuster.   Dadurch  lässt  sich
              verhindern, dass  grep  Suchmuster,  die  mit  -  beginnen,  als
              Optionen interpretiert.

       -F, --fixed-strings
              Interpretiere  MUSTER als Liste feststehender Zeichenketten, die
              durch Zeilenumbruch  getrennt  sind.   Für  einen  Treffer  muss
              mindestens eine der Zeichenketten passen.

       -f DATEI, --file=DATEI
              Lies  die  Suchmuster Zeile für Zeile aus DATEI ein.  Eine leere
              Datei enthält keinerlei  Suchmuster  und  erzielt  deshalb  auch
              keine Treffer.

       -G, --basic-regexp
              Interpretiere  MUSTER als gewöhnlichen regulären Ausdruck (siehe
              unten).  Dies entspricht der Voreinstellung.

       -H, --with-filename
              Gibt vor jedem Treffer den zugehörigen Dateinamen aus.

       -h, --no-filename
              Der Dateiname wird auch dann nicht vor einem Treffer ausgegeben,
              wenn mehrere Dateien durchsucht werden.

       --help Zeigt eine kurze Hilfe zum Programm an.

       -I     Behandelt  Binärdateien  so,  als  würde  ihr Inhalt nie auf das
              Suchmuster passen.  Dies  ist  gleichbedeutend  mit  der  Option
              --binary-files=without-match.

       -i, --ignore-case
              Unterscheidet  auf  der Suche nach Treffern nicht zwischen Groß-
              und Kleinschreibung.

       -L, --files-without-match
              Statt der normalen  Ausgabe  wird  der  Name  jeder  Datei  ohne
              Treffer  angezeigt.   Die Suche endet in jeder Datei beim ersten
              Treffer.

       -l, --files-with-matches
              Statt der  normalen  Ausgabe  wird  der  Name  jeder  Datei  mit
              mindestens  einem  Treffer  angezeigt.  Die Suche endet in jeder
              Datei beim ersten Treffer.

       --mmap Verwendet falls  möglich  den  Systemaufruf  mmap(2)  statt  des
              üblichen   read(2),   um  die  Eingabedaten  einzulesen.   Unter
              gewissen Umständen erzielt --mmap  bessere  Leistungswerte,  ist
              jedoch  unzuverlässiger  und  kann  sogar  zu  Programmabstürzen
              führen, wenn beispielsweise eine Eingabedatei während der  Suche
              verkleinert wird oder ein Ein-/Ausgabefehler auftritt.

       -n, --line-number
              Gibt  vor  jeder  Zeile die Zeilennummer innerhalb der aktuellen
              Eingabedatei aus.

       -q, --quiet, --silent
              Unterdrückt die normalen Ausgaben.  Die  Suche  endet  nach  dem
              ersten  Treffer.   Diese Option ist sinnvoll, wenn lediglich der
              Rückgabewert von grep weiter verwendet  wird.   Siehe  auch  die
              Optionen -s und --no-messages weiter unten.

       -r, --recursive
              Durchsuche    rekursiv   sämtliche   Dateien   unterhalb   eines
              Verzeichnisses.  Die Option -d recurse hat dieselbe Bedeutung.

       -s, --no-messages
              Unterdrücke Fehlermeldungen über nicht vorhandene oder unlesbare
              Dateien.   Anmerkung  zur  Portierbarkeit:   Im Gegensatz zu GNU
              grep verhielt sich das  ursprüngliche  grep  nicht  konform  zum
              POSIX.2-Standard, da es keine Option -q kannte und die Option -s
              sich so verhielt wie -q im heutigen GNU grep.   Portable  Shell-
              Skripte,  die  auch  mit  dem  ursprünglichen grep funktionieren
              müssen, sollten deshalb weder -q noch  -s  verwenden  und  statt
              dessen die Ausgabe nach /dev/null umleiten.

       -U, --binary
              Verarbeite  die Eingaben als Binärdateien.  Unter MS-DOS und MS-
              Windows versucht grep, den Dateityp zu bestimmen, indem  es  die
              ersten   32kByte  der  Datei  untersucht.   In  einer  Textdatei
              entfernt es daraufhin intern alle CR-Wagenrücklaufzeichen, damit
              ^  und  $  in  regulären  Ausdrücken korrekt funktionieren.  Die
              Angabe von -U umgeht die ganze Raterei und weist grep  an,  jede
              Datei  exakt  so  zu verarbeiten, wie sie eingelesen worden ist.
              Falls es sich um eine Textdatei handelt, deren Zeilen mit  einem
              kombinierten  Wagenrücklauf  und  Zeilenumbruch  (CR/LF)  enden,
              arbeiten manche reguläre Ausdrücken  fehlerhaft.   Diese  Option
              hat  keine  Auswirkungen  auf anderen Plattformen als MS-DOS und
              MS-Windows.

       -u, --unix-byte-offsets
              Zeigt Byte-Abstände im Unix-Stil an.  Mit Hilfe dieses Schalters
              gibt  grep Byte-Abstände in Textdateien stets so aus, als würden
              sie  nur  ein  einzelnes   Zeilenumbruchsymbol   am   Zeilenende
              enthalten.      Mit    anderen    Worten:     Ein    eventuelles
              Wagenrücklaufsymbol am Zeilenende wird nicht berücksichtigt.  So
              erzeugt   grep,  angewandt  auf  eine  Textdatei  im  DOS-Format
              identische Resultate wie für  die  gleiche  Textdatei  im  Unix-
              Format.   Diese Option ist nur in Verbindung mit dem Schalter -b
              wirksam.  Sie hat keine Auswirkungen auf anderen Plattformen als
              MS-DOS und MS-Windows.

       -V, --version
              Zeigt   die   Versionsnummer   von   grep   auf   dem  Standard-
              Fehlerausgabekanal  an.   Die  Versionsnummer  sollte  in  allen
              Fehlerberichten (siehe unten) mit angegeben werden.

       -v, --invert-match
              Invertiert  das  Suchmuster,  so  dass  alle  Zeilen  ausgewählt
              werden, die nicht auf MUSTER passen.

       -w, --word-regexp
              Wählt nur  solche  Zeilen  aus,  deren  Treffer  aus  kompletten
              Wörtern  bestehen.  Im einzelnen verläuft der Test so, dass eine
              passende Zeichenkette entweder  am  Zeilenanfang  beginnen  muss
              oder  auf ein Zeichen folgt, das nicht zu den Wortaufbau-Zeichen
              gehört.  Ebenso muss das Ende der Zeichenkette entweder mit  dem
              Zeilenende  zusammenfallen, oder es wird nicht gefolgt von einem
              der   Wortaufbau-Zeichen.     Wortaufbau-Zeichen    sind    alle
              Buchstaben, Ziffern sowie der Unterstrich.

       -x, --line-regexp
              Wählt  nur  solche Zeilen aus, deren Treffer die komplette Zeile
              umfasst.

       -y     Ein veraltetes Synonym für -i.

       -Z, --null
              Gibt statt des üblichen Trennzeichens nach jedem Dateinamen  ein
              Nullbyte  (das ASCII-Zeichen NUL) aus.  So stellt beispielsweise
              grep -lZ nach jedem  Dateinamen  statt  des  Zeilenumbruchs  ein
              Nullbyte dar.  Diese Option sorgt dafür, dass die Ausgabe selbst
              in Gegenwart ungewöhnlicher Dateinamen eindeutig bleibt, die zum
              Beispiel  einen  Zeilenumbruch enthalten.  Sie kann zusammen mit
              Kommandos wie find -print0, perl -0, sort -z und xargs  -0  dazu
              verwendet werden, beliebige Dateinamen zu verarbeiten.

REGULÄRE AUSDRÜCKE

       Unter  einem  regulären  Ausdruck  versteht  man  ein  Muster, das eine
       bestimmte  Menge  von  Zeichenketten  beschreibt.   Reguläre  Ausdrücke
       werden  ganz  ähnlich  aufgebaut wie arithmetische Ausdrücke, indem man
       sie  mit  Hilfe  verschiedener  Operatoren  aus  kleineren   Ausdrücken
       zusammensetzt.

       Grep   versteht   zwei   verschiedene   Klassen   regulärer  Ausdrücke:
       “gewöhnliche” und “erweiterte”.  Eine Unterscheidung, die für  GNU grep
       keine Rolle spielt, da beide Varianten gleich mächtig sind.  In anderen
       grep-Implementierungen  steht  mit  gewöhnlichen  regulären  Ausdrücken
       jedoch  nur  ein  eingeschränkter  Funktionsumfang  zur Verfügung.  Die
       folgende Beschreibung bezieht sich auf erweiterte  reguläre  Ausdrücke;
       die Unterschiede zu gewöhnlichen regulären Ausdrücken sind im Anschluss
       daran zusammengefasst.

       Grundlegendster Baustein sind die  regulären  Ausdrücke,  die  auf  ein
       einzelnes   Zeichen   passen.    Die  meisten  Zeichen,  speziell  alle
       Buchstaben und Ziffern, sind zugleich reguläre Ausdrücke, die auf  sich
       selbst   passen.    Alle  Metazeichen,  die  eine  besondere  Bedeutung
       besitzen,  können  durch  einen  vorausgehenden  Rückstrich   geschützt
       werden.

       Eine Liste von Zeichen, die durch [ und ] eingeschlossen ist, passt auf
       ein beliebiges Zeichen daraus.  Beginnt die Liste mit dem Symbol ^,  so
       kehrt  sich  die Bedeutung um; sie passt auf alle Zeichen, die nicht in
       der Liste enthalten sind.  Beispielsweise passt der  reguläre  Ausdruck
       [0123456789]  auf  eine  beliebige einzelne Ziffer.  Ein ganzer Bereich
       von Zeichen kann angegeben werden durch das erste  und  letzte  Zeichen
       daraus,  verbunden  durch  einen Bindestrich.  Schließlich gibt es noch
       eine Reihe vordefinierter Klassen von Zeichen, im einzelnen:  [:alnum:]
       (Buchstaben    und    Ziffern),   [:alpha:]   (Buchstaben),   [:cntrl:]
       (Steuerzeichen), [:digit:] (Ziffern),  [:graph:]  (graphische  Zeichen,
       das   heißt  [:alnum:]  und  [:punct:]),  [:lower:]  (Kleinbuchstaben),
       [:print:]  (druckbare  Zeichen),  [:punct:]  (Satzzeichen),   [:space:]
       (Leerraum),  [:upper:]  (Großbuchstaben)  und  [:xdigit:]  (Ziffern des
       Hexadezimalsystems).   So  bedeutet  beispielsweise   [[:alnum:]]   für
       gewöhnlich  dasselbe  wie  [0-9A-Za-z], jedoch hängt die zweite Form ab
       von  der  POSIX-Ländereinstellung  und  ASCII-Kodierung  der   Zeichen,
       während  die  erste  Form davon unabhängig ist.  (Man beachte, dass die
       eckigen Klammern Teil des symbolischen  Namens  der  einzelnen  Klassen
       sind.   Zusätzlich  dazu  müssen  noch  die  eckigen Klammern angegeben
       werden, die eine Liste von Zeichen begrenzen.)  Die meisten Metazeichen
       verlieren  innerhalb  einer  Zeichenkette ihre besondere Bedeutung.  Um
       ein ] selbst zu beschreiben, muss es an erster Stelle der Kette gesetzt
       werden.   Soll  ^  als gewöhnliches Zeichen auftreten, darf es nicht an
       erster Stelle stehen.  Das Zeichen - selbst muss an letzter Stelle  der
       Kette auftauchen.

       Der  Punkt  .  passt auf jedes beliebige, einzelne Zeichen.  Das Symbol
       \w ist ein Synonym für [[:alnum:]], \W ein Synonym für [^[:alnum]].

       Das Dach ^ und das Dollarzeichen $  sind  Sonderzeichen,  die  auf  die
       leere  Zeichenkette  am Anfang beziehungsweise Ende einer Zeile passen.
       Ganz ähnlich passen die Symbole \< und \> auf die leere Zeichenkette am
       Anfang  beziehungsweise Ende eines Wortes.  Das Symbol \b passt auf die
       leere Zeichenkette an einem Wortrand; \B bezeichnet das Gegenteil davon
       und  passt  auf  die  leere Zeichenkette, falls die sich nicht an einem
       Wortrand befindet.

       Ein regulärer Ausdruck kann gefolgt  werden  von  einem  oder  mehreren
       Wiederholungsoperatoren:
       ?      Das vorhergehende Objekt ist optional und tritt höchstens einmal
              auf.
       *      Das vorhergehende Objekt tritt kein Mal oder beliebig oft auf.
       +      Das vorhergehende Objekt tritt ein- oder mehrmals auf.
       {n}    Das vorhergehende Objekt tritt genau n-mal auf.
       {n,}   Das vorhergehende Objekt tritt mindestens n-mal oder öfter  auf.
       {n,m}  Das vorhergehende Objekt tritt mindestens n- und höchstens m-mal
              auf.

       Zwei  reguläre  Ausdrücke  können  aneinander   gefügt   werden.    Der
       entstehende reguläre Ausdruck passt auf jede Zeichenkette, die aus zwei
       aneinander gesetzten Teilketten besteht, sofern jede der Teilketten auf
       den zugehörigen regulären Teilausdruck passt.

       Sind  zwei  reguläre  Ausdrück durch den Infix-Operator | verbunden, so
       passt der gesamte reguläre Ausdruck  auf  jede  Zeichenkette,  die  auf
       mindestens einen der beiden Teilausdrücke passt.

       Wiederholungsoperatoren    besitzen    höhere    Priorität   als   eine
       Aneinanderreihung. Am niedrigsten ist die  Priorität  der  Alternative.
       Einzelne  Teilausdrücke  können  in  Klammern  gesetzt werden, um diese
       Regeln explizit abzuändern.

       Die Rückwärtsreferenz \n - wobei n für eine einzelne  Ziffer  steht  -,
       passt  auf  die  Zeichenkette,  die  wiederum  auf  den vorhergehenden,
       eingeklammerten Teilausdruck Nummer n des regulären  Ausdrucks  gepasst
       hat.

       In  gewöhnlichen regulären Ausdrücken besitzen die Metazeichen ?, +, {,
       }, |, ( und ) keine besondere Bedeutung.  Statt dessen können  die  mit
       einem  Rückstrich  geschützten  Versionen \?, \+, \{, \}, \|, \( und \)
       verwendet werden.

       Das Metazeichen { wurde  im  ursprünglichen  egrep  nicht  unterstützt.
       Andere Implementierungen unterstützen statt dessen \{, so dass portable
       Skripte { in egrep-Mustern generell vermeiden sollten.  Als Alternative
       kann [{] verwendet werden, um das Zeichen { selbst zu beschreiben.

       GNU  egrep  versucht, das ursprüngliche Verhalten zu unterstützen indem
       es annimmt, dass { keine besondere Bedeutung  besitzt,  falls  es  eine
       ungültige    Intervallbeschreibung    einleiten    würde.    So   sucht
       beispielsweise das Kommando egrep{1’ nach  der  zwei  Zeichen  langen
       Zeichenkette {1, statt einen fehlerhaften regulären Ausdruck zu melden.
       Dieses Verhalten ist in  POSIX.2  als  Erweiterung  erlaubt.   Portable
       Skripte sollten darauf jedoch nicht vertrauen.

UMGEBUNGSVARIABLEN

       GREP_OPTIONS
              Mit   Hilfe   dieser   Variable   lassen  sich  Standardoptionen
              definieren, die vor alle explizit angegebenen  Optionen  gesetzt
              werden.    Enthält    GREP_OPTIONS   beispielsweise   ’--binary-
              files=without-match --directories=skip’, so verhält  sich  grep,
              als  ob  die  beiden  Optionen  --binary-files=without-match und
              --directories=skip auf  der  Kommandozeile  vor  allen  weiteren
              Optionen  angegeben  worden wären. Mehrere Optionen werden durch
              Leerzeichen  getrennt.  Ein  Rückstrich  schützt  das   folgende
              Zeichen,  so  dass  auch  Optionen  angegeben werden können, die
              selbst Leerzeichen oder Rückstriche enthalten.

       LC_ALL, LC_MESSAGES, LANG
              Diese Variablen wählen  die  LC_MESSAGES-Ländereinstellung  aus,
              die  festlegt,  in welcher Sprache grep seine Meldungen ausgibt.
              Die Ländereinstellung wird in der angegebenen Reihenfolge  durch
              die   erste   gesetzte   Variable   bestimmt.  Falls  keine  der
              Umgebungsvariablen gesetzt, der Katalog  von  Meldungen  in  der
              gewünschten    Sprache    nicht   verfügbar   oder   grep   ohne
              Mehrsprachenunterstützung  (NLS)  übersetzt  worden  ist,   wird
              amerikanisches Englisch verwendet.

       LC_ALL, LC_CTYPE, LANG
              Diese  Variablen legen die LC_CTYPE-Ländereinstellung fest.  Sie
              bestimmt den Typ eines  jeden  Zeichens,  beispielsweise  welche
              Zeichen  als Leerraum angesehen werden, welche als Sonderzeichen
              und welche als Buchstaben. Die  Ländereinstellung  wird  in  der
              angegebenen   Reihenfolge  durch  die  erste  gesetzte  Variable
              bestimmt. Falls keine der Umgebungsvariablen gesetzt  oder  grep
              ohne  Mehrsprachenunterstützung (NLS) übersetzt worden ist, wird
              die POSIX-Einstellung verwendet.

       POSIXLY_CORRECT
              Falls   gesetzt,   verhält   sich   grep   strikt    nach    dem
              POSIX.2-Standard,  andernfalls  ähnelt  sein  Verhalten eher dem
              anderer GNU-Programme.  POSIX.2  verlangt,  dass  Optionen,  die
              nach  einem  Dateinamen angegeben sind, als Dateinamen behandelt
              werden. Normalerweise behandelt grep  sie  immer  als  Optionen,
              gleichgültig  an  welcher Stelle sie auftreten.  Ferner verlangt
              POSIX.2, unbekannte Optionen als  “unzulässig”  anzuzeigen.   In
              den   Standardeinstellungen   meldet   grep  sie  lediglich  als
              “ungültig”.        POSIXLY_CORRECT       deaktiviert        auch
              _N_GNU_nonoption_argv_flags_, das unten genauer beschrieben ist.

       _N_GNU_nonoption_argv_flags_
              (N ist hier die numerische Kennung des  grep-Prozesses.)   Falls
              das  i-te  Zeichen  dieser Umgebungsvariable den Wert 1 besitzt,
              wird das i-te Argument von grep nicht  als  Option  verarbeitet,
              selbst    wenn    es    wie    eine    Option   aussieht.    Ein
              Kommandozeileninterpreter kann diese Umgebungsvariable setzen um
              anzuzeigen,  welche  der  Argumente  erzeugt  worden  sind durch
              Mustererkennung  von  Dateinamen  und  deshalb  keinesfalls  als
              Optionen  berücksichtigt  werden  sollen.  Diese Verhalten steht
              nur in Verbindung mit der GNU C-Bibliothek zur Verfügung und nur
              dann, wenn POSIXLY_CORRECT nicht gesetzt ist.

DIAGNOSE

       Normalerweise  zeigt  ein  Rückgabewert von 0 an, dass Treffer gefunden
       worden sind, und 1, dass es keine Treffer gab.  (Die  Option  -v  kehrt
       die  Bedeutung der Rückgabewerte um.)  Ein Rückgabewert von 2 zeigt ein
       fehlerhaftes Suchmuster an, unzugängliche  Eingabedateien  oder  andere
       Systemfehler.

FEHLER

       Berichte   über   Fehler   in  grep  sollten  per  E-Mail  an  bug-gnu-
       utils@gnu.org geschickt werden.   Die  Betreff-Zeile  sollte  das  Wort
       “grep” enthalten.

       Wiederholungsangaben  im  Konstrukt {m,n} können dazu führen, dass grep
       große Mengen Speicherplatz verbraucht.  Darüber  hinaus  gibt  es  noch
       weitere    ungewöhnliche   reguläre   Ausdrücke,   deren   Verarbeitung
       exponentiell viel Zeit und Speicher benötigt und dazu führen kann, dass
       grep den Speicherplatz erschöpft.

       Rückwärtsreferenzen sind sehr langsam und können exponentiell viel Zeit
       in Anspruch nehmen.

                               26. Oktober 2002                        GREP(1)