egrep

GREP(1)                   Dienstprogramme für Benutzer                   GREP(1)



BEZEICHNUNG
       grep, egrep, fgrep - gibt Zeilen aus, die zu Suchmustern passen

ÜBERSICHT
       grep [OPTION…] MUSTER [DATEI…]
       grep [OPTION…] -e MUSTER … [DATEI…]
       grep [OPTION…] -f MUSTERDATEI … [DATEI…]

BESCHREIBUNG
       grep sucht in jeder DATEI nach MUSTERN. MUSTER ist ein oder mehrere
       Muster, die durch Zeilenumbrüche getrennt sind und grep gibt jede Zeile
       aus, die auf ein Muster passt. Typischerweise sollten MUSTER in
       Anführungszeichen gesetzt werden, wenn grep in einem Shell-Befehl
       verwendet wird.

       Ist DATEI »-« bedeutet dies Standardeingabe. Falls keine DATEI angegeben
       ist, werden rekursive Suchen das aktuelle Verzeichnis prüfen und
       nichtrekursive Suchen die Standardeingabe lesen.

       Darüber hinaus stehen die zwei Programmvarianten egrep und fgrep zur
       Verfügung. Sie entsprechen den Aufrufen grep -E und grep -F. Diese
       Varianten sind veraltet und stehen nur noch aus Gründen der
       Abwärtskompatibilität zur Verfügung.

OPTIONEN
   Allgemeine Programminformationen
       --help zeigt Informationen zur Benutzung an und beendet das Programm.

       -V, --version
              gibt die Versionsnummer von grep und beendet das Programm.

   Muster-Syntax
       -E, --extended-regexp
              MUSTER als erweitertere regulärere Ausdrücke (extended regular
              expressions, EREs, siehe unten) interpretieren.

       -F, --fixed-strings
              MUSTER soll als feste Zeichenkette und nicht als regulärer
              Ausdruck interpretiert werden.

       -G, --basic-regexp
              MUSTER als gewöhnliche reguläre Ausdrücke (basic regular
              expressions, BREs, siehe unten) interpretieren. Das ist die
              Voreinstellung.

       -P, --perl-regexp
              Interpretiert MUSTER als regulären Perl-kompatiblen Ausdruck
              (PCRE). Diese Option ist experimentell, wenn sie mit der Option -z
              (--null-data) kombiniert wird. Es kann vorkommen, dass grep -P
              wegen nicht implementierter Funktionalitäten warnt.

   Steuerung des Abgleichs
       -e MUSTER, --regexp=MUSTER
              MUSTER als die Suchmuster verwenden. Falls diese Option mehrfach
              verwandt oder mit der Option -f (--file) kombiniert wird, wird
              nach allen übergebenen Mustern gesucht. Diese Option kann zum
              Schützen von Mustern, die mit einem »-« anfangen, verwandt werden.

       -f DATEI, --file=DATEI
              Liest die Suchmuster Zeile für Zeile aus DATEI ein. Falls diese
              Option mehrfach verwandt oder mit der Option -e (--regexp)
              kombiniert wird, wird nach allen übergebenen Mustern gesucht. Eine
              leere Datei enthält keine Suchmuster und erzielt deshalb auch
              keine Treffer.

       -i, --ignore-case
              Ignoriert Unterscheidungen der Groß-/Kleinschreibung in Mustern
              und Eingabedaten, so dass Zeichen, die sich nur darin
              unterscheiden, jeweils auf ihr Gegenstück passen.

       --no-ignore-case
              Ignoriert Unterscheidungen der Groß-/Kleinschreibung in Mustern
              und Eingabedaten nicht. Dies ist die Vorgabe. Diese Option ist in
              Shell-Skripten nützlich, die bereits die Option -i verwenden. Die
              beiden Optionen setzen sich gegenseitig außer Kraft, daher können
              Sie auf diese Weise die Wirkung von -i außer Kraft setzen.

       -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 vollständigen
              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 darf kein Wortaufbau-Zeichen folgen.
              Wortaufbau-Zeichen sind alle Buchstaben, Ziffern sowie der
              Unterstrich. Diese Option hat keinen Effekt, falls auch -x
              angegeben ist.

       -x, --line-regexp
              Wählt nur solche Zeilen aus, deren Treffer die komplette Zeile
              umfasst. Für ein Muster eines regulären Ausdrucks ist dies
              identisch zum Setzen des Musters in Anführungszeichen und dann
              Einfassen mit ^ und $.

       -y     veraltetes Synonym für -i

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

       --color[=WANN], --colour[=WANN]
              Schließt die gefundenen (nicht leeren) Zeichenketten, passenden
              Zeilen, Kontextzeilen, Dateinamen, Zeilennummern, Byte-Offsets und
              Separatoren (für Felder und Gruppen von Kontextzeilen) mit
              Escape-Sequenzen ein, damit diese auf dem Terminal farbig
              angezeigt werden. Die Farben werden durch die Umgebungsvariable
              GREP_COLORS definiert. Die missbilligte Umgebungsvariable
              GREP_COLOR wird weiterhin unterstützt, hat aber keine Priorität
              und sollte nicht verwendet werden. WANN kann die Werte never,
              always oder auto annehmen.

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

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

       -m ZAHL, --max-count=ZAHL
              Beendet das Lesen einer Datei, nachdem ZAHL passende Zeilen
              gefunden wurden. Wenn die Eingabe aus einer regulären Datei stammt
              und ZAHL passende Zeilen ausgegeben wurden, positioniert grep,
              bevor es endet, die Standardeingabe ungeachtet der Existenz
              folgender Kontextzeilen direkt hinter der letzten passenden Zeile.
              Dies ermöglicht einem aufrufenden Prozess die Fortsetzung der
              Suche. Wenn grep nach ZAHL passenden Zeilen endet, gibt es alle
              nachfolgenden Kontextzeilen aus. Wenn außerdem die Option -c (oder
              --count) verwendet wird, gibt grep als Ergebnis keine Zahl aus,
              die größer ist als ZAHL. Wenn die Option -v (--invert-match
              verwendet wird, endet grep nach der Ausgabe von ZAHL nicht
              passenden Zeilen.

       -o, --only-matching
              Anstatt der gesamten Zeile werden nur die passenden (nicht leeren)
              Teile ausgegeben. Jeder dieser Teile wird auf einer eigenen Zeile
              ausgegeben.

       -q, --quiet, --silent
              Unterdrückt die normalen Ausgaben. Die Suche endet sofort nach dem
              ersten Treffer und gibt auch beim Auftreten von Fehlern den Status
              Null zurück. Lesen Sie auch die Beschreibung der Option -s oder
              --no-messages.

       -s, --no-messages
              Unterdrückt Fehlermeldungen über nicht existierende oder unlesbare
              Dateien.

   Präfix-Festlegung der Ausgabezeilen
       -b, --byte-offset
              Gibt vor jeder Ausgabezeile die Byte-Position in der Datei relativ
              zum Dateianfang (0) an. Wenn -o (--only-matching) angegeben wird,
              wird die Position des gefundenen Teils angezeigt.

       -H, --with-filename
              Gibt vor jedem Treffer den zugehörigen Dateinamen aus. Das ist das
              Standardverhalten, wenn mehr als eine Datei untersucht wird.

       -h, --no-filename
              Der Dateiname wird vor einem Treffer nicht ausgegeben. Das ist das
              Standardverhalten bei der Suche in nur einer Datei (oder nur in
              der Standardeingabe).

       --label=TEXT
              Zeigt tatsächlich aus der Standardeingabe gelesene Eingaben an,
              als seien sie aus Datei TEXT gelesen. Das ist besonders praktisch
              für Werkzeuge, die den Inhalt von Dateien vor der Suche umwandeln,
              zum Beispiel gzip -cd foo.gz | grep --label=foo -H irgendwas
              (siehe auch die Option -H).

       -n, --line-number
              Gibt vor jeder Zeile die Zeilennummer (gezählt ab 1) innerhalb der
              aktuellen Eingabedatei aus.

       -T, --initial-tab
              Stellt sicher, dass das erste Zeichen des eigentlichen
              Zeileninhalts auf einem Tabulatorstopp liegt, so dass die
              Ausrichtung der Tabulatoren normal aussieht. Dies ist sinnvoll für
              die Optionen, die ihrer Ausgabe einen Präfix voranstellen: -H, -n
              und -b. Um die Wahrscheinlichkeit zu vergrößern, dass die Zeilen
              aus einer einzelnen Datei alle in der gleichen Spalte beginnen,
              bewirkt diese Option auch, dass (eventuell vorhandene)
              Zeilennummern und Byte-Offsets mit minimaler Feldgröße ausgegeben
              werden.

       -u, --unix-byte-offsets
              Zeigt die Byte-Positionen im Unix-Stil an. Mit Hilfe dieses
              Schalters gibt grep Byte-Positionen in Textdateien stets so aus,
              als würden sie nur ein einzelnes Zeilenumbruchsymbol am Zeilenende
              enthalten: Ein eventuelles Wagenrücklaufsymbol am Zeilenende wird
              nicht berücksichtigt. So erzeugt grep die gleichen Resultate wie
              auf einer UNIX-Maschine. Diese Option ist nur in Verbindung mit
              dem Schalter -b wirksam. Auf anderen Plattformen als MS-DOS und
              MS-Windows hat sie keine Auswirkung.

       -Z, --null
              Gibt statt des üblichen Trennzeichens nach jedem Dateinamen ein
              Nullbyte (das ASCII-Zeichen NUL) aus. So gibt beispielsweise grep
              -lZ nach jedem Dateinamen statt des gebräuchlichen Zeilenumbruchs
              ein NULL-Byte aus. Mit dieser Option bleibt die Ausgabe selbst bei
              ungewöhnlichen Dateinamen, die beispielsweise einen Zeilenumbruch
              enthalten, eindeutig. Diese Option kann zusammen mit Befehlen wie
              find -print0, perl -0, sort -z und xargs -0 zur Verarbeitung
              beliebiger Dateinamen verwendet werden (auch solche, die
              Zeilenumbrüche enthalten).

   Steuerung der Kontextzeilen
       -A ZAHL, --after-context=ZAHL
              Zeigt ZAHL Kontextzeilen im Anschluss an eine auf das Muster
              passende Zeile an. Gibt eine Zeile mit einem Gruppentrennzeichen
              (--) zwischen benachbarten Gruppen von Treffern aus. Zusammen mit
              der Option -o oder --only-matching hat diese Option keine
              Auswirkung und es wird eine Warnung ausgegeben.

       -B ZAHL, --before-context=ZAHL
              Zeigt ZAHL Kontextzeilen vor einer auf das Muster passenden Zeile
              an.Gibt eine Zeile mit einem Gruppentrennzeichen (--) zwischen
              benachbarten Gruppen von Treffern aus. Zusammen mit der Option -o
              oder --only-matching hat diese Option keine Auswirkung und es wird
              eine Warnung ausgegeben.

       -C [ZAHL], -ZAHL, --context[=ZAHL]
              Zeigt je ZAHL Kontextzeilen vor und nach einer auf das Muster
              passenden Zeile an. Gibt eine Zeile mit einem Gruppentrennzeichen
              (--) zwischen benachbarten Gruppen von Treffern aus. Zusammen mit
              der Option -o oder --only-matching hat diese Option keine
              Auswirkung und es wird eine Warnung ausgegeben.

   Auswahl von Dateien und Verzeichnissen
       -a, --text
              Verarbeitet eine Binärdatei, als wäre sie gewöhnlicher Text;
              dieser Schalter ist gleichwertig mit --binary-files=text.

       --binary-files=TYP
              Falls die Daten oder Metadaten der Datei anzeigen, dass die Datei
              binäre Daten enthält, wird angenommen, dass die Datei vom Typ TYP
              ist. Bytes, die nicht Text sind, deuten Binärdaten an; diese sind
              entweder Ausgabebytes, die nicht korrekt für die aktuelle Locale
              kodiert wurden, oder Null-Eingabebytes, wenn die Option -z nicht
              angegeben ist.

              Standardmäßig ist TYP binary und grep unterdrückt weitere
              Ausgaben, wenn es Binärdaten als Eingabe erkennt und unterdrückt
              Ausgabezeilen, die inkorrekt kodierte Daten enthalten. Wenn
              Ausgaben unterdrückt werden, gibt grep eine einzeilige Meldung
              aus, die besagt, dass ein Treffer in einer Binärdatei ist.

              Falls TYP without-match ist, wenn grep Null-Eingabedaten erkennt,
              dann nimmt es an, dass in der restlichen Datei keine Treffer sind.
              Dies ist zu der Option -I äquivalent.

              Falls TYP text ist, verarbeitet grep eine Binärdatei, als wäre sie
              gewöhnlicher Text. Dies ist zu der Option -a äquivalent.

              Falls TYP binary ist, kann grep von Text verschiedene Bytes selbst
              ohne die Option -z als Zeilende behandeln. Das bedeutet, die Wahl
              von binary gegenüber text kann beeinflussen, ob ein Muster auf
              eine Datei passt oder nicht. Ist beispielsweise TYP binary, könnte
              das Muster q$ auf q sofort gefolgt von einem NULL-Byte passen,
              selbst wenn dies nicht auf das Muster passt, wenn TYP text ist.
              Entsprechend kann das Muster . (Satzpunkt) nicht auf ein NULL-Byte
              passen, wenn TYP binary ist.

              Warnung: Die Option -a könnte binären Müll ausgeben, der negative
              Seiteneffekte haben kann, falls die Ausgabe auf ein Terminal
              erfolgt und der Terminaltreiber Teile davon als Befehle
              interpretiert. Andererseits kann es nützlich sein, -a zu verwenden
              oder LC_ALL='C' in der Umgebung zu setzen, wenn Texte gelesen
              werden, deren Kodierung unbekannt ist, um weitere Treffer zu
              finden, selbst wenn die Treffer für die direkte Anzeige nicht
              sicher sind.

       -D AKTION, --devices=AKTION
              Wenn die Eingabedatei ein Gerät, ein FIFO oder ein Socket ist,
              wird sie mit AKTION verarbeitet. Die Standard-AKTION ist read. Das
              bedeutet, dass Geräte wie eine gewöhnliche Datei gelesen werden.
              Mit der AKTION skip werden Geräte stillschweigend ausgelassen.

       -d AKTION, --directories=AKTION
              Ist eine Eingabedatei ein Verzeichnis, wird es mit der AKTION
              verarbeitet. In der Standardeinstellung ist AKTION auf read
              gesetzt, das bedeutet, dass Verzeichnisse wie gewöhnliche Dateien
              eingelesen werden. Ist AKTION auf skip gesetzt, so werden
              Verzeichnisse stillschweigend übersprungen. Steht AKTION auf
              recurse, so werden sämtliche Dateien unterhalb jedes
              Verzeichnisses rekursiv durchsucht. Symbolische Links werden nur
              verfolgt, wenn sie auf der Befehlszeile angegeben wurden. Dies ist
              zu der Option -r äquivalent.

       --exclude=GLOB
              Überspringt jede Datei auf der Befehlszeile, deren
              Namenserweiterung auf das Muster GLOB mittels Platzhalter-Abgleich
              passt; eine Namenserweiterung ist entweder der gesamte Name oder
              jeder mit einem / beginnende angehängte Teil und vor einem
              nicht-/. Bei der rekursiven Suche werden alle Unterdateien
              übersprungen, deren Basisname auf GLOB passt; der Basisname ist
              der Teil nach dem letzten /. Ein Muster kann *, ? und [] als
              Platzhalter verwenden, und \, um ein buchstäbliches Platzhalter-
              oder Rückwärtsschrägstrichzeichen zu maskieren.

       --exclude-from=DATEI
              Überspringt Dateien, deren Dateinamen zu einem (mittels
              Platzhalter-Abgleich wie unter --exclude beschrieben) aus DATEI
              gelesenen Dateinamen-»GLOB« passen.

       --exclude-dir=GLOB
              Überspringt jedes Verzeichnis auf der Befehlszeile, dessen
              Namenserweiterung auf das Muster GLOB passt. Wenn Verzeichnisse
              rekursiv durchsucht werden, überspringt dies jedes
              Unterverzeichnis, dessen Basisname auf GLOB passt. Alle
              überflüssigen abschließenden Schrägstriche in GLOB werden
              ignoriert.

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

       --include=GLOB
              Sucht nur nach Dateien, deren Basisname auf GLOB passt (mittels
              Platzhaltersuche wie unter --exclude beschrieben). Falls die
              kollidierenden Optionen --include und --exclude angegeben werden,
              hat Letztere Vorrang. Falls weder --include noch --exclude passt,
              wird eine Datei nur dann berücksichtigt, wenn die erste Option
              nicht --include ist.

       -r, --recursive
              Durchsucht sämtliche Dateien unterhalb jedes Verzeichnisses
              rekursiv. Symbolische Links werden nur verfolgt, wenn sie auf der
              Befehlszeile angegeben wurden. Wenn kein Datei-Operand angegeben
              ist, durchsucht grep das Arbeitsverzeichnis. Dies ist zu der
              Option -d recurse äquivalent.

       -R, --dereference-recursive
              Durchsucht sämtliche Dateien unterhalb jedes Verzeichnisses
              rekursiv. Allen symbolischen Links folgen, anders als -r.

   Weitere Optionen
       --line-buffered
              Verwendet bei der Ausgabe Zeilenpuffer. Das kann Leistungseinbußen
              bewirken.

       -U, --binary
              Verarbeitet die Datei(en) als Binärdaten. Unter MS-DOS und
              MS-Windows versucht grep herauszufinden, ob eine Datei Text oder
              binär ist, wie dies bei der Option --binary-files beschrieben ist.
              In einer von grep zu einer Textdatei erklärten Datei entfernt es
              intern alle Wagenrücklaufzeichen (CR), 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 wurde. Falls es sich um eine
              Textdatei handelt, deren Zeilen mit einem kombinierten
              Wagenrücklauf und Zeilenumbruch (CR/LF) enden, arbeiten manche
              reguläre Ausdrücke fehlerhaft. Diese Option hat auf anderen
              Plattformen als MS-DOS und MS-Windows keine Auswirkungen.

       -z, --null-data
              Behandelt Ein- und Ausgabedaten als Folge von Zeilen, die jede mit
              einem NULL-Byte (das Zeichen ASCII NUL) anstelle eines
              Zeilenvorschubs endet. Wie die Optionen -Z oder --null kann diese
              Option zusammen mit Befehlen wie sort -z für die Verarbeitung
              beliebiger Dateinamen eingesetzt werden.

REGULÄRE AUSDRÜCKE
       Unter einem regulären Ausdruck versteht man ein Muster, das eine Menge
       von Zeichenketten beschreibt. Reguläre Ausdrücke werden analog zu
       arithmetischen Ausdrücken aufgebaut: Sie werden mit Hilfe verschiedener
       Operatoren aus kleineren Ausdrücken zusammengesetzt.

       grep versteht drei verschiedene Klassen regulärer Ausdrücke:
       »gewöhnliche« (basic, BRE), »erweiterte« (extended, ERE) und »perl«
       (PCRE). GNU grep stellt für gewöhnliche und erweiterte reguläre Ausdrücke
       die gleiche Funktionalität bereit. In anderen 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 werden im Anschluss daran zusammengefasst. Die
       Perl-kompatiblen regulären Ausdrücke stellen zusätzliche Funktionen
       bereit und sind in pcresyntax(3) und pcrepattern(3) dokumentiert,
       funktionieren aber nur, wenn PCRE im System verfügbar ist.

       Grundlegende Bausteine sind die regulären Ausdrücke, die auf ein
       einzelnes Zeichen passen. Die meisten Zeichen, insbesondere 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 vorangestellten Rückschrägstrich geschützt werden.

       Der Punkt . steht für jedes einzelne Zeichen. Es ist nicht festgelegt, ob
       er auf einen Kodierfehler passt.

   Zeichenklassen und Klammerausdrücke
       Ein Klammerausdruck ist eine durch [ und ] eingeschlossene Liste von
       Zeichen. Er passt auf jedes Zeichen aus der Liste. Beginnt die Liste mit
       dem Symbol ^, so passt der Ausdruck auf alle Zeichen, die nicht in der
       Liste enthalten sind; es ist nicht spezifiziert, ob es auf einen
       Kodierfehler passt. Beispielsweise passt der reguläre Ausdruck
       [0123456789] auf eine beliebige einzelne Ziffer.

       Innerhalb eines Klammerausdrucks sind Bereichsausdrücke (range
       expressions) möglich. Ein Bereichsausdruck besteht aus zwei durch einen
       Bindestrich getrennten Zeichen. Er steht für ein einzelnes Zeichen
       einschließlich der Begrenzungszeichen, das gemäß der Sortierreihenfolge
       der Locale und dem Zeichensatz zwischen den beiden Begrenzungszeichen
       liegt. Zum Beispiel ist in der Standard-Locale C [ad] äquivalent zu
       [abcd]. Viele Locales sortieren Zeichen in der Wörterbuch-Reihenfolge.
       Dort ist [ad] in der Regel nicht gleichwertig mit [abcd]; es wäre zum
       Beispiel gleichbedeutend mit [aBbCcDd]. Um die traditionelle
       Interpretation von Klammerausdrücken zu bewirken, können Sie die C-Locale
       verwenden. Dazu setzen Sie die Umgebungsvariable LC_ALL auf den Wert C.

       Schließlich gibt es noch einige vordefinierte Zeichenklassen innerhalb
       von Klammerausdrücken mit (im Englischen) selbsterklärenden Namen. Das
       sind im Einzelnen: [:alnum:] (Buchstaben und Ziffern), [:alpha:]
       (Buchstaben), [:blank:],[: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:]] die Zeichenklasse der Ziffern und Buchstaben in der aktuellen
       Locale. In der C-Locale und der Zeichenkodierung ASCII ist dies dasselbe
       wie [0-9A-Za-z]. (Beachten Sie, 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 eines
       Klammerausdrucks 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.

   Setzen von Ankern
       Die Metazeichen Dach ^ und Dollar $ passen auf die leere Zeichenkette am
       Anfang beziehungsweise Ende einer Zeile.

   Das Backslash-Zeichen (Rückschrägstrich) und spezielle Ausdrücke
       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. Das Symbol \w ist ein Synonym für [_[:alnum:]] und \W
       steht für [^_[:alnum:]].

   Wiederholungen
       Einem regulären Ausdruck können einer oder mehrere
       Wiederholungsoperatoren folgen:
       ?      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 n-mal oder öfter auf.
       {,m}   Das vorhergehende Objekt tritt höchstens m-mal auf. Dies ist eine
              GNU-Erweiterung.
       {n,m}  Das vorhergehende Objekt tritt mindestens n- und höchstens m-mal
              auf.

   Verknüpfung
       Zwei reguläre Ausdrücke können verbunden werden. Der entstehende reguläre
       Ausdruck passt auf jede Zeichenkette, die aus zwei aneinander gesetzten
       Teilketten, die auf die zugehörigen Teilausdrücke passen, besteht.

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

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

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

   Vergleich gewöhnlicher und erweiterter regulärer Ausdrücke
       In gewöhnlichen regulären Ausdrücken besitzen die Metazeichen ?, +, {, },
       |, ( und ) keine besondere Bedeutung. Stattdessen müssen die mit einem
       Rückschrägstrich geschützten Versionen \?, \+, \{, \}, \|, \( und \)
       verwendet werden.

EXIT-STATUS
       Normalerweise ist der Exit-Status 0, wenn eine Zeile ausgewählt ist, 1
       wenn keine Zeilen ausgewählt wurden, und 2 wenn ein Fehler aufgetreten
       ist. Allerdings ist der Exit-Status auch dann 0, wenn ein Fehler
       aufgetreten ist, sofern die Optionen -q, --quiet oder --silent übergeben
       wurden und eine Zeile ausgewählt ist.

UMGEBUNGSVARIABLEN
       Das Verhalten von grep wird durch die folgenden Umgebungsvariablen
       bestimmt.

       Die Locale für die Kategorie LC_foo wird durch die Untersuchung der drei
       Umgebungsvariablen LC_ALL, LC_foo und LANG (in dieser Reihenfolge)
       bestimmt. Die erste dieser Variablen, die gesetzt ist, gibt die Locale
       an. Ist beispielsweise LC_ALL nicht, dafür aber LC_MESSAGES auf pt_BR
       gesetzt, dann wird für die Kategorie LC_MESSAGES brasilianisches
       Portugiesisch verwendet. Die C-Locale wird verwendet, wenn keine dieser
       Umgebungsvariablen gesetzt ist, wenn der Locale-Katalog nicht installiert
       ist oder wenn grep ohne Unterstützung für Landessprachen (national
       language support, NLS) kompiliert wurde. Der Shell-Befehl locale -a zeigt
       die derzeit verfügbaren Locales an.

       GREP_COLOR
              Diese Variable gibt die Farbe an, mit der (nicht leere)
              Fundstellen des Suchausdrucks hervorgehoben werden. Sie ist
              veraltet, wird aber immer noch unterstützt. Verwenden Sie
              stattdessen GREP_COLORS. Die Fähigkeiten mt, ms und mc von
              GREP_COLORS werden dieser Variable im Konfliktfall vorgezogen. Die
              Variable kann nur die Farbe angeben, mit der passender nicht
              leerer Text in jeder Zeile mit einer Fundstelle markiert wird (das
              ist eine ausgewählte Zeile, wenn die Befehlszeilenoption -v
              weggelassen wird, oder eine Kontextzeile, wenn -v angegeben ist).
              Der Standardwert ist 01;31. Er bedeutet roten Text in Fettdruck
              vor dem Standard-Hintergrund des Terminals.

       GREP_COLORS
              Gibt die Farben und andere Attribute an, die für Markierung
              verschiedener Elemente der Ausgabe verwendet werden. Ihr Wert ist
              eine durch Doppelpunkte getrennte Liste von Fähigkeiten, deren
              Standardwert gleich
              ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 ist. (Die
              booleschen Fähigkeiten rv und ne sind also weggelassen (d.h. auf
              auf false gesetzt)). Es werden die folgenden Fähigkeiten
              unterstützt.

              sl=    SGR-Teilsequenz für ganze ausgewählte Zeilen (d.h.
                     übereinstimmende Zeilen, wenn die Befehlszeilenoption -v
                     weggelassen wird oder nicht übereinstimmende Zeilen, wenn
                     -v angegeben wird). Wenn jedoch sowohl die boolesche
                     Fähigkeit rv als auch die Befehlszeilenoption -v angegeben
                     werden, gilt die Option stattdessen für passende
                     Kontextzeilen. Der Standardwert ist leer (d.h. das
                     Standard-Farbpaar des Terminals).

              cx=    SGR-Teilsequenz für ganze Kontextzeilen (d.h. nicht
                     übereinstimmende Zeilen, wenn die Befehlszeilenoption -v
                     weggelassen wird oder übereinstimmende Zeilen, wenn -v
                     angegeben wird). Wenn jedoch sowohl die boolesche Fähigkeit
                     rv als auch die Befehlszeilenoption -v angegeben werden,
                     gilt die Option stattdessen für nicht passende Zeilen. Der
                     Standardwert ist leer (d.h. das Standard-Farbpaar des
                     Terminals).

              rv     Boolescher Wert, der die Bedeutung der Fähigkeiten sl= und
                     cx= vertauscht, wenn die Befehlszeilenoption -v gewählt
                     wird. Der Standardwert ist false (d.h. die Fähigkeit wird
                     nicht genutzt).

              mt=01;31
                     SGR-Teilsequenz für passenden, nicht leeren Text in jeder
                     passenden Zeile (d.h. einer ausgewählten Zeile, wenn die
                     Befehlszeilenoption -v weggelassen wird oder einer
                     Kontextzeile, wenn -v angegeben wurde). Die Wahl dieser
                     Option ist gleichwertig mit der Wahl des gleichen Wertes
                     für ms= und mc=. Der Standardwert ist fetter roter Text vor
                     der aktuellen Hintergrundfarbe der Zeile.

              ms=01;31
                     SGR-Teilsequenz für passenden, nicht leeren Text in einer
                     ausgewählten Zeile. (Dies wird nur verwendet, wenn die
                     Befehlszeilenoption -v weggelassen wird.) Die Wirkung der
                     Fähigkeit sl= (oder cx=, wenn rv gesetzt ist) bleibt aktiv,
                     wenn diese auftritt. Der Standardwert ist ein fetter roter
                     Text vor dem aktuellen Zeilenhintergrund.

              mc=01;31
                     SGR-Teilsequenz für passenden, nicht leeren Text in einer
                     Kontextzeile. (Dies wird nur verwendet, wenn die
                     Befehlszeilenoption -v gewählt wird.) Die Wirkung der
                     Fähigkeit cx= (oder sl=, wenn rv gesetzt ist) bleibt aktiv,
                     wenn diese sich aktivieren. Der Standardwert ist ein fetter
                     roter Text vor dem aktuellen Zeilenhintergrund.

              fn=35  SGR-Teilsequenz für Dateinamen, die beliebigen
                     Kontextzeilen vorausgehen. Standard ist ein violetter
                     Textvordergrund vor dem Standardhintergrund des Terminals.

              ln=32  SGR-Teilsequenz für Zeilennummern, die beliebigen
                     Kontextzeilen vorausgehen. Standard ist ein grüner
                     Textvordergrund vor dem Standardhintergrund des Terminals.

              bn=32  SGR-Teilsequenz für »Byte Offsets«, die beliebigen
                     Kontextzeilen vorausgehen. Standard ist ein grüner
                     Textvordergrund vor dem Standardhintergrund des Terminals.

              se=36  SGR-Teilsequenz für Separatoren, die zwischen die Felder
                     für ausgewählte Zeilen (:), für Kontextzeilen (-) und
                     zwischen Gruppen von benachbarten Zeilen (wenn ein von Null
                     verschiedener Kontext gewählt wurde (--)) eingefügt werden.
                     Der Standardwert ist ein blaugrüner (cyan) Textvordergrund
                     vor dem Standardhintergrund des Terminals.

              ne     Boolescher Wert, der das Löschen bis zum Zeilenende mittels
                     »Erase in Line (EL) to Right« (\33[K) verhindert, wenn ein
                     eingefärbtes Element endet. Er wird für Terminals benötigt,
                     die EL nicht unterstützten. Ansonsten ist er nützlich für
                     Terminals, für die die boolesche Terminfo-Fähigkeit
                     back_color_erase (bce) nicht gilt, wenn die gewählten
                     Markierungsfarben nicht den Hintergrund beeinflussen oder
                     wenn EL zu langsam ist oder zu viel Flackern verursacht.
                     Der Standardwert ist false (d.h. die Fähigkeit wird
                     weggelassen).

              Beachten Sie, dass boolesche Fähigkeiten keinen =…-Teil aufweisen.
              Sie werden per Vorgabe weggelassen (d.h. auf false gesetzt) und
              werden aktiviert, wenn sie angegeben werden.

              Im Abschnitt »Wahl der grafischen Darstellung« (Select Graphic
              Rendition, SGR) der Dokumentation des Textterminals finden Sie
              zulässige Werte und ihre Bedeutung als Zeichenattribute. Diese
              Teilzeichenkettenwerte sind ganze Zahlen in Dezimaldarstellung und
              können mit einem Semikolon verbunden werden. grep erzeugt aus dem
              Ergebnis eine vollständige SGR-Sequenz (\33[m). Gebräuchliche
              Bestandteile der Sequenz sind 1 für fett, 4 für unterstrichen, 5
              für blinken, 7 für inverse Darstellung, 39 für
              Standard-Vordergrundfarbe, 30 bis 37 für die Farben im
              Vordergrund, 90 bis 97 für Vordergrundfarben im 16-Farben-Modus,
              38,5,0 bis 38,5,255 für Vordergrundfarben in den 88-Farben- und
              256-Farben-Modi, 49 für die Standard-Hintergrundfarbe, 40 bis 47
              für Hintergrundfarben, 100 bis 107 für Hintergrundfarben im
              16-Farben-Modus und 48,5,0 bis 48,5,255 für Hintergrundfarben in
              den 88-Farben- und 256-Farben-Modi.

       LC_ALL, LC_COLLATE, LANG
              Diese Variablen gibt die Locale für die Kategorie LC_CTYPE an. Sie
              bestimmt die Sortierreihenfolge, mit der Ausdrücke zur Angabe
              eines Bereichs wie beispielsweise [a-z] ausgewertet werden.

       LC_ALL, LC_CTYPE, LANG
              Diese Variablen gibt die Locale für die Kategorie LC_CTYPE an, die
              die Art der Zeichen festlegt, z.B. welche Zeichen Leerraumzeichen
              sind. Diese Kategorie bestimmt auch die Zeichenkodierung, d.h. ob
              Text in UTF-8, ASCII oder einer anderen Kodierung vorliegt. In der
              C- oder POSIX-Locale sind alle Zeichen als einzelnes Byte kodiert
              und jedes Byte ist ein gültiges Zeichen.

       LC_ALL, LC_MESSAGES, LANG
              Diese Variablen wählen die Locale für die Kategorie LC_MESSAGES.
              Diese legt fest, in welcher Sprache grep seine Meldungen ausgibt.
              Die Standard-Locale C verwendet Meldungen in amerikanischem
              Englisch.

       POSIXLY_CORRECT
              Falls gesetzt, verhält sich grep strikt nach dem POSIX-Standard.
              Anderenfalls ähnelt sein Verhalten eher dem anderer GNU-Programme.
              POSIX verlangt von Optionen, die nach einem Dateinamen angegeben
              sind, dass sie als Dateinamen behandelt werden. Normalerweise
              behandelt grep sie immer als Optionen, gleichgültig an welcher
              Stelle sie auftreten. Ferner verlangt POSIX, 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 im Folgenden genauer
              beschrieben wird.

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

ANMERKUNGEN
       Diese Handbuchseite wird nur sporadisch aktualisiert, die vollständige
       Dokumentation ist meistens aktueller.

COPYRIGHT
       Copyright 1998-2000, 2002, 2005-2020 Free Software Foundation, Inc.

       Dies ist freie Software, in den Quellen finden Sie die Bedingungen zur
       Weitergabe. Es gibt KEINE Garantie, auch nicht für die MARKTREIFE oder
       die TAUGLICHKEIT FÜR EINEN BESTIMMTEN ZWECK.

FEHLER
   Fehler berichten
       Schicken Sie Fehlermeldungen (auf Englisch) per E-Mail an die
       Fehlermeldeadresse ⟨bug-grep@gnu.org⟩.  Ein E-Mail-Archiv
       ⟨https://lists.gnu.org/mailman/listinfo/bug-grep⟩ und eine
       Fehlerdatenbank ⟨https://debbugs.gnu.org/cgi/pkgreport.cgi?package=grep⟩
       sind verfügbar.

   Bekannte Fehler
       Eine große Zahl von Wiederholungen im Konstrukt {m,n} kann dazu führen,
       dass grep sehr viel 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.

BEISPIEL
       Das folgende Beispiel gibt den Ort und den Inhalt jeder Zeile aus, die
       ein »f« enthält und mit »c« endet, innerhalb aller Dateien im aktuellen
       Verzeichnis, deren Namen ein »g« enthalten und mit ».h« enden. Die Option
       -n gibt Zeilennummern aus, das Argument -- fasst Erweiterungen von
       »*g*.h«, die mit »-« beginnen, als Dateinamen und nicht als Optionen auf,
       und die leere Datei /dev/null lässt Dateinamen auch dann ausgeben, wenn
       nur ein Dateiname der Form »*g*.h« entspricht.

         $ grep -n -- 'f.*\.c$' *g*.h /dev/null
         argmatch.h:1:/* definitions and prototypes for argmatch.c

       Die einzige Trefferzeile ist die Zeile 1 von argmatch.h. Beachten Sie,
       das die in dem Muster verwendete Syntax regulärer Ausdrücke sich von der
       Globbing-Syntax unterscheidet, die von der Shell zum Finden von
       Dateinamenübereinstimmungen verwendet wird.

SIEHE AUCH
   Normale Handbuchseiten
       awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1),
       read(2), pcre(3), pcresyntax(3), pcrepattern(3), terminfo(5), glob(7),
       regex(7).

   Komplette Dokumentation
       Es ist ein vollständiges Handbuch
       ⟨https://www.gnu.org/software/grep/manual/⟩ verfügbar. Wenn die Programme
       info und grep auf Ihrem Rechner ordnungsgemäß installiert sind, können
       Sie mit dem Befehl

              info grep

       auf das vollständige Handbuch zugreifen.


ÜBERSETZUNG
       Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
       Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann
       <mario.blaettermann@gmail.com>, Dr. Tobias Quathamer <toddy@debian.org>
       und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder
       neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
       Sie bitte eine E-Mail an die Mailingliste der Übersetzer ⟨debian-l10n-
       german@lists.debian.org⟩.



GNU grep 3.6                       2019-12-29                            GREP(1)