GREP(1) Dienstprogramme fur Benutzer GREP(1) BEZEICHNUNG grep - Zeilen ausgeben, die zu Suchmustern passen UBERSICHT 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 Zeilenumbruche getrennt sind und grep gibt jede Zeile aus, die auf ein Muster passt. Typischerweise sollten MUSTER in Anfuhrungszeichen 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 prufen und nichtrekursive Suchen die Standardeingabe lesen. 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 erweiterte regulare Ausdrucke (extended regular expressions, EREs, siehe unten) interpretieren. -F, --fixed-strings MUSTER soll als feste Zeichenkette und nicht als regularer Ausdruck interpretiert werden. -G, --basic-regexp MUSTER als gewohnliche regulare Ausdrucke (basic regular expressions, BREs, siehe unten) interpretieren. Das ist die Voreinstellung. -P, --perl-regexp Interpretiert MUSTER als regularen 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 Funktionalitaten 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 ubergebenen Mustern gesucht. Diese Option kann zum Schutzen von Mustern, die mit einem >>-<< anfangen, verwandt werden. -f DATEI, --file=DATEI Liest die Suchmuster Zeile fur Zeile aus DATEI ein. Falls diese Option mehrfach verwandt oder mit der Option -e (--regexp) kombiniert wird, wird nach allen ubergebenen Mustern gesucht. Eine leere Datei enthalt keine Suchmuster und erzielt deshalb auch keine Treffer. Falls die DATEI als - angegeben wird, werden die Muster aus der Standardeingabe gelesen. -i, --ignore-case Ignoriert Unterscheidungen der Gross-/Kleinschreibung in Mustern und Eingabedaten, so dass Zeichen, die sich nur darin unterscheiden, jeweils auf ihr Gegenstuck passen. --no-ignore-case Ignoriert Unterscheidungen der Gross-/Kleinschreibung in Mustern und Eingabedaten nicht. Dies ist die Vorgabe. Diese Option ist in Shell-Skripten nutzlich, die bereits die Option -i verwenden. Die beiden Optionen setzen sich gegenseitig ausser Kraft, daher konnen Sie auf diese Weise die Wirkung von -i ausser Kraft setzen. -v, --invert-match Invertiert das Suchmuster, so dass alle Zeilen ausgewahlt werden, die nicht auf MUSTER passen. -w, --word-regexp Wahlt nur solche Zeilen aus, deren Treffer aus vollstandigen Wortern bestehen. Im Einzelnen verlauft der Test so, dass eine passende Zeichenkette entweder am Zeilenanfang beginnen muss oder auf ein Zeichen folgt, das nicht zu den Wortaufbau-Zeichen gehort. 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 Wahlt nur solche Zeilen aus, deren Treffer die komplette Zeile umfasst. Fur ein Muster eines regularen Ausdrucks ist dies identisch zum Setzen des Musters in Anfuhrungszeichen und dann Einfassen mit ^ und $. Allgemeine Ausgabesteuerung -c, --count Statt die passenden Zeilen direkt anzuzeigen, wird lediglich ihre Anzahl pro Eingabedatei ausgegeben. Ist zusatzlich die Option -v, --invert-match (siehe oben) angegeben, zahlt grep die Zeilen ohne Treffer. --color[=WANN], --colour[=WANN] Schliesst die gefundenen (nicht leeren) Zeichenketten, passenden Zeilen, Kontextzeilen, Dateinamen, Zeilennummern, Byte-Offsets und Separatoren (fur 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. 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. -l, --files-with-matches Statt der normalen Ausgabe wird der Name jeder Datei mit Treffer angezeigt. Die Suche in jeder Eingabedatei endet beim ersten Treffer. -m ZAHL, --max-count=ZAHL Beendet das Lesen einer Datei, nachdem ZAHL passende Zeilen gefunden wurden. Falls die ZAHL Null ist, stoppt grep unmittelbar, ohne die Eingabe zu lesen. Falls die ZAHL -1 ist, wir dies als unendlich aufgefasst und grep stoppt nicht; dies ist die Vorgabe. Wenn die Eingabe aus einer regularen 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 ermoglicht einem aufrufenden Prozess die Fortsetzung der Suche. Wenn grep nach ZAHL passenden Zeilen endet, gibt es alle nachfolgenden Kontextzeilen aus. Wenn ausserdem die Option -c (oder --count) verwendet wird, gibt grep als Ergebnis keine Zahl aus, die grosser 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 Unterdruckt die normalen Ausgaben. Die Suche endet sofort nach dem ersten Treffer und gibt auch beim Auftreten von Fehlern den Status Null zuruck. Lesen Sie auch die Beschreibung der Option -s oder --no-messages. -s, --no-messages Unterdruckt Fehlermeldungen uber nicht existierende oder unlesbare Dateien. Prafix-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 zugehorigen Dateinamen aus. Das ist das Standardverhalten, wenn mehr als eine Datei untersucht wird. Dies ist eine GNU-Erweiterung. -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 tatsachlich aus der Standardeingabe gelesene Eingaben an, als seien sie aus Datei TEXT gelesen. Das ist besonders praktisch fur 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 (gezahlt 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 fur die Optionen, die ihrer Ausgabe einen Prafix voranstellen: -H, -n und -b. Um die Wahrscheinlichkeit zu vergrossern, 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 Feldgrosse ausgegeben werden. -Z, --null Gibt statt des ublichen Trennzeichens nach jedem Dateinamen ein Nullbyte (das ASCII-Zeichen NUL (Nullbyte)) aus. So gibt beispielsweise grep -lZ nach jedem Dateinamen statt des gebrauchlichen Zeilenumbruchs ein Nullbyte aus. Mit dieser Option bleibt die Ausgabe selbst bei ungewohnlichen 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 Zeilenumbruche 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. --group-separator=TRENNZEICHEN zeigt bei Verwendung von -A, -B oder -C das angegebene TRENNZEICHEN anstatt -- zwischen Zeilengruppen an. --no-group-separator zeigt bei Verwendung von -A, -B oder -C kein Trennzeichen zwischen Zeilengruppen an. Auswahl von Dateien und Verzeichnissen -a, --text Verarbeitet eine Binardatei, als ware sie gewohnlicher Text; dieser Schalter ist gleichwertig mit --binary-files=text. --binary-files=TYP Falls die Daten oder Metadaten der Datei anzeigen, dass die Datei binare Daten enthalt, wird angenommen, dass die Datei vom Typ TYP ist. Bytes, die nicht Text sind, deuten Binardaten an; diese sind entweder Ausgabebytes, die nicht korrekt fur die aktuelle Locale kodiert wurden, oder Null-Eingabebytes, wenn die Option -z nicht angegeben ist. Standardmassig ist TYP binary und grep unterdruckt weitere Ausgaben, wenn es Binardaten als Eingabe erkennt und unterdruckt Ausgabezeilen, die inkorrekt kodierte Daten enthalten. Wenn Ausgaben unterdruckt werden, schreibt grep eine Meldung in die Standardfehlerausgabe, die besagt, dass ein Treffer in einer Binardatei 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 aquivalent. Falls TYP text ist, verarbeitet grep eine Binardatei, als ware sie gewohnlicher Text. Dies ist zu der Option -a aquivalent. Falls TYP binary ist, kann grep von Text verschiedene Bytes selbst ohne die Option -z als Zeilende behandeln. Das bedeutet, die Wahl von binary gegenuber text kann beeinflussen, ob ein Muster auf eine Datei passt oder nicht. Ist beispielsweise TYP binary, konnte das Muster q$ auf q sofort gefolgt von einem Nullbyte passen, selbst wenn dies nicht auf das Muster passt, wenn TYP text ist. Entsprechend kann das Muster . (Satzpunkt) nicht auf ein Nullbyte passen, wenn TYP binary ist. Warnung: Die Option -a konnte binaren Mull ausgeben, der negative Seiteneffekte haben kann, falls die Ausgabe auf ein Terminal erfolgt und der Terminaltreiber Teile davon als Befehle interpretiert. Andererseits kann es nutzlich 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 fur die direkte Anzeige nicht sicher sind. -D AKTION, --devices=AKTION Wenn die Eingabedatei ein Gerat, ein FIFO oder ein Socket ist, wird sie mit AKTION verarbeitet. Die Standard-AKTION ist read. Das bedeutet, dass Gerate wie eine gewohnliche Datei gelesen werden. Mit der AKTION skip werden Gerate 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 gewohnliche Dateien eingelesen werden. Ist AKTION auf skip gesetzt, so werden Verzeichnisse stillschweigend ubersprungen. Steht AKTION auf recurse, so werden samtliche Dateien unterhalb jedes Verzeichnisses rekursiv durchsucht. Symbolische Links werden nur verfolgt, wenn sie auf der Befehlszeile angegeben wurden. Dies ist zu der Option -r aquivalent. --exclude=GLOB Uberspringt 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 angehangte Teil und vor einem nicht-/. Bei der rekursiven Suche werden alle Unterdateien ubersprungen, deren Basisname auf GLOB passt; der Basisname ist der Teil nach dem letzten /. Ein Muster kann *, ? und [] als Platzhalter verwenden, und \, um ein buchstabliches Platzhalter- oder Ruckwartsschragstrichzeichen zu maskieren. --exclude-from=DATEI Uberspringt Dateien, deren Dateinamen zu einem (mittels Platzhalter-Abgleich wie unter --exclude beschrieben) aus DATEI gelesenen Dateinamen->>GLOB<< passen. --exclude-dir=GLOB Uberspringt jedes Verzeichnis auf der Befehlszeile, dessen Namenserweiterung auf das Muster GLOB passt. Wenn Verzeichnisse rekursiv durchsucht werden, uberspringt dies jedes Unterverzeichnis, dessen Basisname auf GLOB passt. Alle uberflussigen abschliessenden Schragstriche in GLOB werden ignoriert. -I Behandelt Binardateien so, als wurde 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 berucksichtigt, wenn die erste Option nicht --include ist. -r, --recursive Durchsucht samtliche 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 aquivalent. -R, --dereference-recursive Durchsucht samtliche Dateien unterhalb jedes Verzeichnisses rekursiv. Allen symbolischen Links folgen, anders als -r. Weitere Optionen --line-buffered Verwendet bei der Ausgabe Zeilenpuffer. Das kann Leistungseinbussen bewirken. -U, --binary Verarbeitet die Datei(en) als Binardaten. Unter MS-DOS und MS-Windows versucht grep herauszufinden, ob eine Datei Text oder binar ist, wie dies bei der Option --binary-files beschrieben ist. In einer von grep zu einer Textdatei erklarten Datei entfernt es intern alle Wagenrucklaufzeichen (CR), damit ^ und $ in regularen Ausdrucken 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 Wagenrucklauf und Zeilenumbruch (CR/LF) enden, arbeiten manche regulare Ausdrucke 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 (Nullbyte)) anstelle eines Zeilenvorschubs endet. Wie die Optionen -Z oder --null kann diese Option zusammen mit Befehlen wie sort -z fur die Verarbeitung beliebiger Dateinamen eingesetzt werden. REGULARE AUSDRUCKE Unter einem regularen Ausdruck versteht man ein Muster, das eine Menge von Zeichenketten beschreibt. Regulare Ausdrucke werden analog zu arithmetischen Ausdrucken aufgebaut: Sie werden mit Hilfe verschiedener Operatoren aus kleineren Ausdrucken zusammengesetzt. grep versteht drei verschiedene Klassen regularer Ausdrucke: >>gewohnliche<< (basic, BRE), >>erweiterte<< (extended, ERE) und >>perl<< (PCRE). In GNU grep sind die gewohnliche und erweiterte regulare Ausdrucke lediglich verschiedene Notationen fur die gleiche Mustervergleichsfunktionalitat. In anderen Implementierungen steht mit gewohnlichen regularen Ausdrucken normalerweise jedoch nur ein eingeschrankter Funktionsumfang zur Verfugung, gelegentlich ist es aber auch andersherum. Die folgende Beschreibung bezieht sich auf erweiterte regulare Ausdrucke; die Unterschiede zu gewohnlichen regularen Ausdrucken werden im Anschluss daran zusammengefasst. Die Perl-kompatiblen regularen Ausdrucke stellen andere Funktionalitaten bereit und sind in pcresyntax(3) und pcrepattern(3) dokumentiert, funktionieren aber nur, wenn PCRE-Unterstutzung aktiviert ist. Grundlegende Bausteine sind die regularen Ausdrucke, die auf ein einzelnes Zeichen passen. Die meisten Zeichen, insbesondere alle Buchstaben und Ziffern, sind zugleich regulare Ausdrucke, die auf sich selbst passen. Alle Metazeichen, die eine besondere Bedeutung besitzen, konnen durch einen vorangestellten Ruckschragstrich geschutzt werden. Der Punkt . steht fur jedes einzelne Zeichen. Es ist nicht festgelegt, ob er auf einen Kodierfehler passt. Zeichenklassen und Klammerausdrucke 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 regulare Ausdruck [0123456789] auf eine beliebige einzelne Ziffer. Innerhalb eines Klammerausdrucks sind Bereichsausdrucke (range expressions) moglich. Ein Bereichsausdruck besteht aus zwei durch einen Bindestrich getrennten Zeichen. Er steht fur ein einzelnes Zeichen einschliesslich der Begrenzungszeichen, das gemass der Sortierreihenfolge der Locale und dem Zeichensatz zwischen den beiden Begrenzungszeichen liegt. Zum Beispiel ist in der Standard-Locale C [ad] aquivalent zu [abcd]. Viele Locales sortieren Zeichen in der Worterbuch-Reihenfolge. Dort ist [ad] in der Regel nicht gleichwertig mit [abcd]; es ware zum Beispiel gleichbedeutend mit [aBbCcDd]. Um die traditionelle Interpretation von Klammerausdrucken zu bewirken, konnen Sie die C-Locale verwenden. Dazu setzen Sie die Umgebungsvariable LC_ALL auf den Wert C. Schliesslich gibt es noch einige vordefinierte Zeichenklassen innerhalb von Klammerausdrucken mit (im Englischen) selbsterklarenden Namen. Das sind im Einzelnen: [:alnum:] (Buchstaben und Ziffern), [:alpha:] (Buchstaben), [:blank:],[:cntrl:] (Steuerzeichen), [:digit:] (Ziffern), [:graph:] (graphische Zeichen, das heisst [:alnum:] und [:punct:]), [:lower:] (Kleinbuchstaben), [:print:] (druckbare Zeichen), [:punct:] (Satzzeichen), [:space:] (Leerraum), [:upper:] (Grossbuchstaben) 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. Zusatzlich dazu mussen 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 gewohnliches 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 (Ruckschragstrich) und spezielle Ausdrucke Ganz ahnlich 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 fur [_[:alnum:]] und \W steht fur [^_[:alnum:]]. Wiederholungen Einem regularen Ausdruck konnen einer oder mehrere Wiederholungsoperatoren folgen: ? Das vorhergehende Objekt ist optional und tritt hochstens 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 ofter auf. {,m} Das vorhergehende Objekt tritt hochstens m-mal auf. Dies ist eine GNU-Erweiterung. {n,m} Das vorhergehende Objekt tritt mindestens n- und hochstens m-mal auf. Verknupfung Zwei regulare Ausdrucke konnen verbunden werden. Der entstehende regulare Ausdruck passt auf jede Zeichenkette, die aus zwei aneinander gesetzten Teilketten, die auf die zugehorigen Teilausdrucke passen, besteht. Alternativen Sind zwei regulare Ausdrucke durch den Infix-Operator | verbunden, so passt der gesamte regulare Ausdruck auf jede Zeichenkette, die auf einen der beiden Teilausdrucke passt. Prioritat Wiederholungsoperatoren besitzen hohere Prioritat als eine Aneinanderreihung. Am niedrigsten ist die Prioritat der Alternative. Teilausdrucke konnen in Klammern gesetzt werden, um diese Regeln explizit abzuandern. Ruckwartsverweise und Teilausdrucke Die Ruckwartsreferenz \n - wobei n fur eine einzelne Ziffer steht - steht fur die Zeichenkette, die wiederum auf den vorhergehenden, eingeklammerten Teilausdruck Nummer n des regularen Ausdrucks passt. Vergleich gewohnlicher und erweiterter regularer Ausdrucke In gewohnlichen regularen Ausdrucken besitzen die Metazeichen ?, +, {, }, |, ( und ) keine besondere Bedeutung. Stattdessen mussen die mit einem Ruckschragstrich geschutzten Versionen \?, \+, \{, \}, \|, \( und \) verwendet werden. EXIT-STATUS Normalerweise ist der Exit-Status 0, wenn eine Zeile ausgewahlt ist, 1 wenn keine Zeilen ausgewahlt 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 ubergeben wurden und eine Zeile ausgewahlt ist. UMGEBUNGSVARIABLEN Das Verhalten von grep wird durch die folgenden Umgebungsvariablen bestimmt. Die Locale fur 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, dafur aber LC_MESSAGES auf pt_BR gesetzt, dann wird fur 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 Unterstutzung fur Landessprachen (national language support, NLS) kompiliert wurde. Der Shell-Befehl locale -a zeigt die derzeit verfugbaren Locales an. GREP_COLORS Steuert, wie die Option --color die Ausgabenhervorhebung durchfuhrt. Ihr Wert ist eine durch Doppelpunkte getrennte Liste von Fahigkeiten, deren Standardwert gleich ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 ist. (Die booleschen Fahigkeiten rv und ne sind also weggelassen (d.h. auf false gesetzt)). Es werden die folgenden Fahigkeiten unterstutzt. sl= SGR-Teilsequenz fur ganze ausgewahlte Zeilen (d.h. ubereinstimmende Zeilen, wenn die Befehlszeilenoption -v weggelassen wird oder nicht ubereinstimmende Zeilen, wenn -v angegeben wird). Wenn jedoch sowohl die boolesche Fahigkeit rv als auch die Befehlszeilenoption -v angegeben werden, gilt die Option stattdessen fur passende Kontextzeilen. Der Standardwert ist leer (d.h. das Standard-Farbpaar des Terminals). cx= SGR-Teilsequenz fur ganze Kontextzeilen (d.h. nicht ubereinstimmende Zeilen, wenn die Befehlszeilenoption -v weggelassen wird oder ubereinstimmende Zeilen, wenn -v angegeben wird). Wenn jedoch sowohl die boolesche Fahigkeit rv als auch die Befehlszeilenoption -v angegeben werden, gilt die Option stattdessen fur nicht passende Zeilen. Der Standardwert ist leer (d.h. das Standard-Farbpaar des Terminals). rv Boolescher Wert, der die Bedeutung der Fahigkeiten sl= und cx= vertauscht, wenn die Befehlszeilenoption -v gewahlt wird. Der Standardwert ist false (d.h. die Fahigkeit wird nicht genutzt). mt=01;31 SGR-Teilsequenz fur passenden, nicht leeren Text in jeder passenden Zeile (d.h. einer ausgewahlten 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 fur ms= und mc=. Der Standardwert ist fetter roter Text vor der aktuellen Hintergrundfarbe der Zeile. ms=01;31 SGR-Teilsequenz fur passenden, nicht leeren Text in einer ausgewahlten Zeile. (Dies wird nur verwendet, wenn die Befehlszeilenoption -v weggelassen wird.) Die Wirkung der Fahigkeit 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 fur passenden, nicht leeren Text in einer Kontextzeile. (Dies wird nur verwendet, wenn die Befehlszeilenoption -v gewahlt wird.) Die Wirkung der Fahigkeit 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 fur Dateinamen, die beliebigen Kontextzeilen vorausgehen. Standard ist ein violetter Textvordergrund vor dem Standardhintergrund des Terminals. ln=32 SGR-Teilsequenz fur Zeilennummern, die beliebigen Kontextzeilen vorausgehen. Standard ist ein gruner Textvordergrund vor dem Standardhintergrund des Terminals. bn=32 SGR-Teilsequenz fur >>Byte Offsets<<, die beliebigen Kontextzeilen vorausgehen. Standard ist ein gruner Textvordergrund vor dem Standardhintergrund des Terminals. se=36 SGR-Teilsequenz fur Separatoren, die zwischen die Felder fur ausgewahlte Zeilen (:), fur Kontextzeilen (-) und zwischen Gruppen von benachbarten Zeilen (wenn ein von Null verschiedener Kontext gewahlt wurde (--)) eingefugt werden. Der Standardwert ist ein blaugruner (cyan) Textvordergrund vor dem Standardhintergrund des Terminals. ne Boolescher Wert, der das Loschen bis zum Zeilenende mittels >>Erase in Line (EL) to Right<< (\33[K) verhindert, wenn ein eingefarbtes Element endet. Er wird fur Terminals benotigt, die EL nicht unterstutzten. Ansonsten ist er nutzlich fur Terminals, fur die die boolesche Terminfo-Fahigkeit back_color_erase (bce) nicht gilt, wenn die gewahlten Markierungsfarben nicht den Hintergrund beeinflussen oder wenn EL zu langsam ist oder zu viel Flackern verursacht. Der Standardwert ist false (d.h. die Fahigkeit wird weggelassen). Beachten Sie, dass boolesche Fahigkeiten 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 zulassige Werte und ihre Bedeutung als Zeichenattribute. Diese Teilzeichenkettenwerte sind ganze Zahlen in Dezimaldarstellung und konnen mit einem Semikolon verbunden werden. grep erzeugt aus dem Ergebnis eine vollstandige SGR-Sequenz (\33[m). Gebrauchliche Bestandteile der Sequenz sind 1 fur fett, 4 fur unterstrichen, 5 fur blinken, 7 fur inverse Darstellung, 39 fur Standard-Vordergrundfarbe, 30 bis 37 fur die Farben im Vordergrund, 90 bis 97 fur Vordergrundfarben im 16-Farben-Modus, 38,5,0 bis 38,5,255 fur Vordergrundfarben in den 88-Farben- und 256-Farben-Modi, 49 fur die Standard-Hintergrundfarbe, 40 bis 47 fur Hintergrundfarben, 100 bis 107 fur Hintergrundfarben im 16-Farben-Modus und 48,5,0 bis 48,5,255 fur Hintergrundfarben in den 88-Farben- und 256-Farben-Modi. LC_ALL, LC_COLLATE, LANG Diese Variablen gibt die Locale fur die Kategorie LC_CTYPE an. Sie bestimmt die Sortierreihenfolge, mit der Ausdrucke zur Angabe eines Bereichs wie beispielsweise [a-z] ausgewertet werden. LC_ALL, LC_CTYPE, LANG Diese Variablen gibt die Locale fur 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 gultiges Zeichen. LC_ALL, LC_MESSAGES, LANG Diese Variablen wahlen die Locale fur 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, verhalt sich grep strikt nach dem POSIX-Standard. Anderenfalls ahnelt 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, gleichgultig an welcher Stelle sie auftreten. Ferner verlangt POSIX, unbekannte Optionen als >>unzulassig<< anzuzeigen. In den Standardeinstellungen meldet grep sie lediglich als >>ungultig<<. ANMERKUNGEN Diese Handbuchseite wird nur sporadisch aktualisiert, die vollstandige Dokumentation ist meistens aktueller. COPYRIGHT Copyright 1998-2000, 2002, 2005-2023 Free Software Foundation, Inc. Dies ist freie Software, in den Quellen finden Sie die Bedingungen zur Weitergabe. Es gibt KEINE Garantie, auch nicht fur die MARKTREIFE oder die TAUGLICHKEIT FUR EINEN BESTIMMTEN ZWECK. FEHLER Fehler berichten Schicken Sie Fehlermeldungen (auf Englisch) per E-Mail an die Fehlermeldeadresse . Ein E-Mail-Archiv und eine Fehlerdatenbank sind verfugbar. Bekannte Fehler Eine grosse Zahl von Wiederholungen im Konstrukt {m,n} kann dazu fuhren, dass grep sehr viel Speicherplatz verbraucht. Daruber hinaus gibt es noch weitere ungewohnliche regulare Ausdrucke, deren Verarbeitung exponentiell viel Zeit und Speicher benotigt und dazu fuhren kann, dass grep den Speicherplatz erschopft. Ruckwartsreferenzen sind sehr langsam und konnen exponentiell viel Zeit in Anspruch nehmen. BEISPIEL Das folgende Beispiel gibt den Ort und den Inhalt jeder Zeile aus, die ein >>f<< enthalt 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 lasst 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 regularer Ausdrucke sich von der Globbing-Syntax unterscheidet, die von der Shell zum Finden von Dateinamenubereinstimmungen verwendet wird. SIEHE AUCH Normale Handbuchseiten awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1), read(2), pcre2(3), pcre2syntax(3), pcre2pattern(3), terminfo(5), glob(7), regex(7) Komplette Dokumentation Es ist ein vollstandiges Handbuch verfugbar. Wenn die Programme info und grep auf Ihrem Rechner ordnungsgemass installiert sind, konnen Sie mit dem Befehl info grep auf das vollstandige Handbuch zugreifen. UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Mario Blattermann , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . GNU grep 3.11 2019-12-29 GREP(1)