ÜBERSICHT
grep [OPTIONEN] MUSTER [DATEI...]
grep [OPTIONEN] [-e MUSTER | -f
DATEI] [DATEI...]
grep sucht in den angegebenen DATEIen (oder der
Standardeingabe, wenn keine Dateien oder ein einzelner Trenn-/Bindestrich
(-) als Dateiname angegeben wurde) nach Zeilen, die auf das
MUSTER passen. Per Voreinstellung gibt grep die passenden
Zeilen aus.
Darüber hinaus stehen die drei Programmvarianten
egrep, fgrep und rgrep zur Verfügung. Sie
entsprechen den Aufrufen grep -E, grep -F und
grep -r. Von dem direkten Aufruf entweder als egrep
oder fgrep wird abgeraten. Die Programme werden bereitgestellt, damit
historische Anwendungen, die sich auf deren Existenz verlassen, ohne
Modifikation laufen können.
- --help
- grep zeigt eine kurze Zusammenfassung der Befehlszeilen-Optionen
und die Adresse für Fehlerberichte an; anschließend wird es
beendet.
- -V, --version
- grep zeigt die Versionsnummer auf der Standardfehlerausgabe an. Die
Versionsnummer sollte in allen Fehlerberichten (siehe unten) mit angegeben
werden.
- -E,
--extended-regexp
- MUSTER soll als erweiterter regulärer Ausdruck (extended
regular expression, ERE, siehe unten) interpretiert werden. (-E
wird von POSIX gefordert.)
- -F,
--fixed-strings
- Interpretiert MUSTER als Liste feststehender Zeichenketten, die
durch Zeilenumbruch getrennt sind. Für einen Treffer muss
mindestens eine der Zeichenketten passen. (-F wird von POSIX
gefordert.)
- -G,
--basic-regexp
- Interpretiert MUSTER als gewöhnlichen regulären
Ausdruck (basic regular expression, BRE, siehe unten). Das ist die
Voreinstellung.
- -P,
--perl-regexp
- Interpretiert MUSTER als einen regulären Perl-Ausdruck.
Diese Option ist höchst experimentell. Es kann vorkommen, dass
grep -P wegen nicht implementierter Features warnt.
- -e MUSTER,
--regexp=MUSTER
- Verwendet MUSTER als das Suchmuster. Damit können mehrere
Suchmuster angegeben oder Muster geschützt werden, die mit einem
Bindestrich (-) anfangen. (-e wird von POSIX
gefordert.)
- -f DATEI,
--file=DATEI
- Liest die Suchmuster Zeile für Zeile aus DATEI ein. Eine
leere Datei enthält keine Suchmuster und erzielt deshalb auch keine
Treffer. (-f wird von POSIX gefordert.)
- -i,
--ignore-case
- Unterscheidet auf der Suche nach Treffern sowohl im MUSTER als auch
den Eingabedateien nicht zwischen Groß- und Kleinschreibung.
(-i wird von POSIX gefordert.)
- -v,
--invert-match
- Invertiert das Suchmuster, so dass alle Zeilen ausgewählt werden,
die nicht auf MUSTER passen. (-v wird von POSIX
gefordert.)
- -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.
- -x,
--line-regexp
- Wählt nur solche Zeilen aus, deren Treffer die komplette Zeile
umfasst. (-x wird von POSIX gefordert.)
- -y
- veraltetes Synonym für -i
- -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 mindestens einem
Treffer angezeigt. Die Suche endet beim ersten Treffer. (-l wird
von POSIX gefordert.)
- -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. (-q wird von POSIX gefordert.)
- -s,
--no-messages
- Unterdrückt Fehlermeldungen über nicht vorhandene oder nicht
lesbare Dateien. Anmerkung zur Portierbarkeit: Im Gegensatz zu GNU
grep war das ursprüngliche (7th Edition Unix) grep
nicht POSIX-konform, da ihm die Option -q fehlte und die Option
-s sich so verhielt wie -q im heutigen GNU grep.
grep im USG-Stil fehlte ebenfalls -q, aber seine Option
-s verhielt sich wie GNU grep. Portable Shell-Skripte, die
auch mit dem ursprünglichen grep funktionieren
müssen, sollten deshalb weder -q noch -s verwenden
und stattdessen die Ausgabe (stdout und stderr) nach /dev/null
umleiten. (-s wird von POSIX gefordert.)
- -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 die Realisierung von Werkzeugen wie zgrep, z.B. 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. (-n wird von POSIX gefordert.)
- -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).
- -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.
- -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 ersten Bytes einer Datei anzeigen, dass sie Binärdaten
enthält, soll angenommen werden, dass es sich um eine Datei vom Typ
TYP handelt. Als Standard wird für den TYP
binary angenommen. Normalerweise gibt grep lediglich eine
Meldung aus, dass es in einer binären Datei Treffer gab, und
schweigt, wenn nichts gefunden wurde. In der Einstellung
without-match überspringt grep Binärdateien,
ohne dort nach Treffern zu suchen. Der Schalter -I bewirkt
dasselbe. Mit der Einstellung text (äquivalent mit
-a) bearbeitet grep eine Binärdatei als sei sie eine
Textdatei. Warnung: grep --binary-files=text kann mit
üblen Nebenwirkungen binären »Müll«
ausgeben, wenn die Ausgabe auf eine Konsole geleitet wird und deren
Treiber manche der Binärdaten als Steuerzeichen interpretiert.
- -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 Dateien, deren Dateiname unter Verwendung von
Platzhaltern zu GLOB passt. Ein Dateinamen-»GLOB«
kann *, ? und [...] als Platzhalter und
\ zum Maskieren von Platzhalterzeichen oder des
Rückschrägstriches verwenden.
- --exclude-from=DATEI
- Überspringt Dateien, deren Dateinamen zu einem (mittels
Platzhalter-Abgleich wie unter --exclude beschrieben) aus
DATEI gelesenen Dateinamen-»GLOB« passen.
- --exclude-dir=VERZ
- Schließt Verzeichnisse, die zum Muster VERZ passen, von der
rekursiven Suche aus.
- -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
- Durchsucht nur Dateien, deren »base names« zu (mittels
Platzhalter-Abgleich wie unter --exclude beschrieben)
»GLOB« passen.
- -r,
--recursive
- Durchsucht sämtliche Dateien unterhalb jedes Verzeichnisses
rekursiv. Symbolische Links werden nur verfolgt, wenn sie auf der
Befehlszeile angegeben wurden. 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.
- --line-buffered
- Verwendet bei der Ausgabe Zeilenpuffer. Das kann Leistungseinbußen
bewirken.
- --mmap
- Verwendet, falls möglich, beim Lesen der Eingabedaten den
Systemaufruf mmap(2) statt des üblichen read(2).
Unter gewissen Umständen erzielt --mmap bessere
Leistungswerte, ist jedoch unzuverlässiger und kann sogar zu
Programmabstürzen (inclusive core dumps) führen, wenn
beispielsweise eine Eingabedatei während der Suche verkleinert wird
oder ein Ein-/Ausgabefehler auftritt.
- -U, --binary
- Verarbeitet die Datei(en) als Binärdaten. Unter MS-DOS und
MS-Windows versucht grep, den Dateityp zu bestimmen, indem es die
ersten 32 kByte der Datei untersucht. 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 die Eingabe als einen Satz von Zeilen, von denen jede mit einem
Null-Byte (das ASCII-Zeichen 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.
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« (PRCE).
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 PRCE-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.
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. 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), [: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.
Die Metazeichen Dach ^ und Dollar $ passen auf die
leere Zeichenkette am Anfang beziehungsweise Ende einer Zeile.
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:]].
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}
- The preceding item is matched at most m times. This is a GNU
extension.
- {n,m}
- Das vorhergehende Objekt tritt mindestens n - und höchstens
m -mal auf.
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.
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.
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.
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.
Das Metazeichen { wurde im ursprünglichen
egrep nicht unterstützt. Andere Implementierungen
unterstützen stattdessen \{, sodass portable Skripte {
in Mustern für grep -E generell vermeiden sollten.
Für das Zeichen { selbst sollte der Ausdruck [{]
verwendet werden.
GNU grep -E attempts to support traditional usage by
assuming that { is not special if it would be the start of an invalid
interval specification. For example, the command
grep -E '{1' searches for the two-character string
{1 instead of reporting a syntax error in the regular expression.
POSIX allows this behavior as an extension, but portable scripts should
avoid it.
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, legt die Locale fest. 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.
- 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 Befehlszeile vor allen weiteren Optionen
angegeben worden wären. Mehrere Optionen werden durch Leerzeichen
getrennt. Ein Rückschrägstrich (backslash) schützt
das folgende Zeichen, so dass auch Optionen angegeben werden
können, die selbst Leerzeichen oder Rückschrägstriche
enthalten.
- GREP_COLOR
- Diese Variable legt die Farbe fest, 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 festlegen, 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
sl= (oder cx=, wenn rv gesetzt ist) bleibt aktiv,
wenn diese »kicks in«. 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 legen die Locale für die Kategorie LC_CTYPE
fest. 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 legen die Locale für die Kategorie LC_CTYPE
fest. Diese bestimmt den Zeichentyp eines jeden Zeichens, beispielsweise
welche Zeichen als Leerraum angesehen werden.
- 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
- If set, grep behaves as POSIX requires; otherwise, grep
behaves more like other GNU programs. POSIX requires that options that
follow file names must be treated as file names; by default, such options
are permuted to the front of the operand list and are treated as options.
Also, POSIX requires that unrecognized options be diagnosed as
“illegal”, but since they are not really against the law the
default is to diagnose them as “invalid”.
POSIXLY_CORRECT also disables
_N_GNU_nonoption_argv_flags_, described below.
- _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.
Der Rückgabewert ist 0, wenn die gewählten Zeilen
gefunden werden, sonst 1. Wenn ein Fehler auftrat, ist der
Rückgabewert 2. (Anmerkung: POSIX-Code zur Fehlerbehandlung sollte
auf »2« oder größer prüfen.)
Copyright 1998-2000, 2002, 2005-2013 Free Software Foundation,
Inc.
Dies ist freie Software; siehe den Quelltext für
Kopierbedingungen. Es gibt KEINE Garantie, nicht einmal für
MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
Senden Sie Fehlerberichte zu grep per E-Mail in englischer
Sprache an die Mailingliste bug-greps@gnu.org, deren Webseite
<http://lists.gnu.org/mailman/listinfo/bug-grep> ist. Die
Fehler von grep können Sie unter
<http://savannah.gnu.org/bugs/?group=grep> verfolgen.
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.
awk(1), cmp(1), diff(1), find(1), gzip(1), perl(1), sed(1),
sort(1), xargs(1), zgrep(1), mmap(2), read(2), pcre(3), pcrepattern(3),
pcresyntax(3), terminfo(5), glob(7), regex(7).
Die vollständige Dokumentation für grep wird
als TeXinfo-Handbuch gepflegt, das Sie unter
http://www.gnu.org/software/grep/manual/ lesen können. 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.
Diese Handbuchseite wird nur sporadisch aktualisiert, die
vollständige Dokumentation ist meistens aktueller.
GNU' ist nicht Unix, aber Unix ist eine Bestie; sein Plural ist
Unixen.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Tobias Quathamer
<toddy@debian.org> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General Public License Version 3 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
<debian-l10n-german@lists.debian.org>.