Name
grep, egrep, fgrep – Zeilen ausdrucken, die einem Muster entsprechen
Synopsis
grep PATTERN
grep
Beschreibung
grep durchsucht die benannten Eingabedateien (oder die Standardeingabe, wenn keine Dateien benannt sind, oder wenn ein einzelnes Bindestrich-Minus (-) als Dateiname angegeben ist) nach Zeilen, die eine Übereinstimmung mit dem angegebenen PATTERN enthalten. Standardmäßig gibt grep die übereinstimmenden Zeilen aus.
Zusätzlich stehen zwei Varianten der Programme egrep und fgrep zur Verfügung. egrep ist dasselbe wie grep -E. fgrep ist dasselbe wie grep -F. Der direkte Aufruf als egrep oder fgrep ist veraltet, wird aber angeboten, damit historische Anwendungen, die auf diese Programme angewiesen sind, unverändert ausgeführt werden können.
Optionen
Allgemeine Programminformationen
–help
Drucken Sie eine Benutzungsmeldung, die diese Befehlszeilenoptionen und die Fehlerberichtsadresse kurz zusammenfasst, und beenden Sie dann.
-V, –version Geben Sie die Versionsnummer von grep in den Standardausgabestrom aus. Diese Versionsnummer sollte in alle Fehlerberichte aufgenommen werden (siehe unten).
Matcher Selection
-E, –extended-regexp Interpretiert PATTERN als einen erweiterten regulären Ausdruck (ERE, siehe unten). (-E ist durch POSIX spezifiziert.) -F, –fixed-strings Interpretiert PATTERN als eine Liste fester Zeichenketten, die durch Zeilenumbrüche getrennt sind und von denen eine beliebige gefunden werden soll. (-F ist von POSIX vorgegeben.) -G, –basic-regexp Interpretiert PATTERN als einen einfachen regulären Ausdruck (BRE, siehe unten). Dies ist die Voreinstellung. -P, –perl-regexp Interpretiert PATTERN als regulären Perl-Ausdruck. Dies ist höchst experimentell und grep -P kann vor nicht implementierten Funktionen warnen.
Matching Control
-e PATTERN, –regexp=PATTERN Verwendet PATTERN als Muster. Dies kann verwendet werden, um mehrere Suchmuster zu spezifizieren oder um ein Muster zu schützen, das mit einem Bindestrich (-) beginnt.(-e ist durch POSIX spezifiziert.) -f DATEI, –datei=DATEI Holt Muster aus DATEI, eines pro Zeile. Die leere Datei enthält keine Muster und passt daher nicht. (-f wird vonPOSIX angegeben.) -i, –ignore-case Ignoriert Groß- und Kleinschreibung sowohl in den PATTERN als auch in den Eingabedateien. (-i wird von POSIX angegeben.) -v, –invert-match Kehrt den Sinn der Übereinstimmung um, um nicht übereinstimmende Zeilen auszuwählen. (-v wird von POSIX angegeben.) -w, –word-regexp Wählt nur die Zeilen aus, die Übereinstimmungen enthalten, die ganze Wörter bilden. Der Test besteht darin, dass die übereinstimmende Teilzeichenkette entweder am Anfang der Zeile stehen muss oder dass ihr ein Nicht-Wort-Bestandteilzeichen vorangestellt wird. Ebenso muss die Teilzeichenkette entweder am Ende der Zeile stehen oder von einem wortfremden Zeichen gefolgt werden, wobei wortbildende Zeichen Buchstaben, Ziffern und der Unterstrich sind. -x, –line-regexp Wählt nur die Übereinstimmungen aus, die genau mit der gesamten Zeile übereinstimmen. (-x ist durch POSIX spezifiziert.) -y
Veraltetes Synonym für -i.
Allgemeine Ausgabesteuerung
-c, –count Unterdrückt die normale Ausgabe; gibt stattdessen eine Anzahl übereinstimmender Zeilen für jede Eingabedatei aus. Mit der Option -v, –invert-match (siehe unten) werden nicht übereinstimmende Zeilen gezählt. (-c ist durch POSIX spezifiziert.) –color, –colour Umgibt die übereinstimmenden (nicht leeren) Zeichenketten, die übereinstimmenden Zeilen, die Kontextzeilen, die Dateinamen, die Zeilennummern, die Byte-Offsets und die Trennzeichen (für Felder und Gruppen von Kontextzeilen) mit Escape-Sequenzen, um sie auf dem Terminal farbig darzustellen. Die Farben werden durch die Umgebungsvariable GREP_COLORS definiert. Die veraltete Umgebungsvariable GREP_COLOR wird zwar noch unterstützt, ihre Einstellung hat aber keine Priorität. WHEN ist never, always, oderauto. -L, –files-without-match Unterdrückt die normale Ausgabe; stattdessen wird der Name jeder Eingabedatei ausgegeben, von der normalerweise keine Ausgabe gedruckt worden wäre. Die Suche wird beim ersten Treffer abgebrochen. -l, –files-with-matches Unterdrückt die normale Ausgabe; gibt stattdessen den Namen jeder Eingabedatei aus, von der normalerweise eine Ausgabe gedruckt worden wäre. Die Überprüfung wird beim ersten Treffer abgebrochen. (-l ist durch POSIX spezifiziert.) -m NUM, –max-count=NUM Stoppt das Lesen einer Datei nach NUM passenden Zeilen. Wenn es sich bei der Eingabe um eine Standardeingabe aus einer regulären Datei handelt und NUM übereinstimmende Zeilen ausgegeben werden, stellt grep sicher, dass die Standardeingabe bis kurz nach der letzten übereinstimmenden Zeile positioniert wird, bevor es beendet wird, unabhängig vom Vorhandensein von abschließenden Kontextzeilen. Dies ermöglicht es einem aufrufenden Prozess, die Suche fortzusetzen. Wenn grep nach NUM übereinstimmenden Zeilen anhält, gibt es alle abschließenden Kontextzeilen aus. Wenn die Option -c oder –count ebenfalls verwendet wird, gibt grep keine Anzahl aus, die größer als NUM ist. Wenn die Option -v oder –invert-match ebenfalls verwendet wird, hält grep nach der Ausgabe von NUM nicht übereinstimmenden Zeilen an. -o, –only-matching Gibt nur die übereinstimmenden (nicht leeren) Teile einer übereinstimmenden Zeile aus, wobei jeder dieser Teile in einer eigenen Ausgabezeile steht. -q, –quiet, –silent Leise; schreibt nichts auf die Standardausgabe. Sofortiges Beenden mit Status Null, wenn eine Übereinstimmung gefunden wird, auch wenn ein Fehler entdeckt wurde. Siehe auch die Option-s oder –no-messages. (-q ist durch POSIX spezifiziert.) -s, –no-messages Unterdrückt Fehlermeldungen über nicht existierende oder nicht lesbare Dateien. Hinweis zur Portabilität: Im Gegensatz zu GNU grep war die 7th Edition von Unix grep nicht POSIX-konform, da es keine -q-Option hatte und seine -s-Option sich wie die -q-Option von GNU grep verhielt.USG -style grep hatte ebenfalls keine -q-Option, aber seine -s-Option verhielt sich wie GNU grep. Portable Shell-Skripte sollten sowohl -q als auch -s vermeiden und stattdessen die Standard- und Fehlerausgabe nach /dev/null umleiten. (-s ist durch POSIX spezifiziert.)
Ausgabezeilen-Präfixkontrolle
-b, –byte-offset Gibt den 0-basierten Byte-Offset innerhalb der Eingabedatei vor jeder Ausgabezeile aus. Wenn -o (–only-matching) angegeben ist, wird der Offset des übereinstimmenden Teils selbst ausgegeben. -H, –with-filename Gibt den Dateinamen für jede Übereinstimmung aus. Dies ist die Standardeinstellung, wenn es mehr als eine Datei zu durchsuchen gibt. -h, –no-filename Unterdrückt die Voranstellung von Dateinamen bei der Ausgabe. Dies ist die Standardeinstellung, wenn nur eine Datei (oder nur die Standardeingabe) zu durchsuchen ist. –label=LABEL Zeigt Eingaben, die tatsächlich von der Standardeingabe kommen, als Eingaben aus der Datei LABEL an. Dies ist besonders nützlich, wenn Sie Werkzeuge wiezgrep einsetzen, z.B. gzip -cd foo.gz | grep –label=foo -H irgendwas. Siehe auch die Option -H. -n, –line-number Stellt jeder Ausgabezeile die 1-basierte Zeilennummer innerhalb der Eingabedatei voran. (-n ist durch POSIX festgelegt.) -T, –initial-tab Stellt sicher, dass das erste Zeichen des tatsächlichen Zeileninhalts auf einem Tabulatorstopp liegt, so dass die Ausrichtung der Tabulatoren normal aussieht. Dies ist nützlich bei Optionen, die ihre Ausgabe an den eigentlichen Inhalt koppeln: -H,-n, und -b. Um die Wahrscheinlichkeit zu erhöhen, dass Zeilen aus einer einzelnen Datei alle in derselben Spalte beginnen, bewirkt dies auch, dass die Zeilennummer und der Byte-Offset (falls vorhanden) in einer Mindestfeldbreite ausgegeben werden. -u, –unix-byte-offsets Byte-Offsets im Unix-Stil ausgeben. Dieser Schalter veranlasst grep, Byte-Offsets so auszugeben, als ob die Datei eine Textdatei im Unix-Stil wäre, d.h. ohne CR-Zeichen. Dies führt zu den gleichen Ergebnissen wie die Ausführung von grep auf einem Unix-Rechner. Diese Option hat keine Wirkung, wenn nicht auch die Option -b verwendet wird; sie hat keine Wirkung auf anderen Plattformen als MS-DOS und MS -Windows. -Z, –null Ausgabe eines Null-Bytes (das ASCII-Zeichen NUL) anstelle des Zeichens, das normalerweise einem Dateinamen folgt. Zum Beispiel gibt grep -lZ nach jedem Dateinamen ein Null-Byte anstelle des üblichen Zeilenumbruchs aus. Diese Option sorgt für eine eindeutige Ausgabe, selbst bei Dateinamen, die ungewöhnliche Zeichen wie Zeilenumbrüche enthalten. Diese Option kann mit Befehlen wie find -print0, perl -0, sort -z und xargs -0 verwendet werden, um beliebige Dateinamen zu verarbeiten, auch solche, die Zeilenumbruchzeichen enthalten.
Kontextzeilenkontrolle
-A NUM, –after-context=NUM Druckt NUM Zeilen von nachlaufendem Kontext nach passenden Zeilen. Setzt eine Zeile mit einem Gruppentrennzeichen (–) zwischen zusammenhängende Gruppen von Übereinstimmungen. Mit der Option -o oder –only-matching hat dies keine Wirkung und es wird eine Warnung ausgegeben. -B NUM, –before-context=NUM Druckt NUM Zeilen mit führendem Kontext vor den passenden Zeilen. Platziert eine Zeile mit einem Gruppentrennzeichen (–) zwischen zusammenhängende Gruppen von Übereinstimmungen. Mit der Option -o oder –only-matching hat dies keine Wirkung und es wird eine Warnung ausgegeben. -C NUM, -NUM, –context=NUM Druckt NUM Zeilen des Ausgabekontexts. Setzt eine Zeile mit einem Gruppentrennzeichen (–) zwischen zusammenhängende Gruppen von Übereinstimmungen. Mit der Option -o oder–only-matching hat dies keine Wirkung und es wird eine Warnung ausgegeben.
Datei- und Verzeichnisauswahl
-a, –text Verarbeitet eine Binärdatei, als wäre sie Text; dies entspricht der Option –binary-files=text. –binary-files=TYPE Wenn die ersten Bytes einer Datei darauf hinweisen, dass die Datei binäre Daten enthält, wird angenommen, dass die Datei vom Typ TYPE ist. Standardmäßig ist TYPEbinary, und grep gibt normalerweise entweder eine einzeilige Meldung aus, die besagt, dass eine Binärdatei übereinstimmt, oder keine Meldung, wenn es keine Übereinstimmung gibt. Wenn TYPohne-übereinstimmen ist, nimmt grep an, dass eine Binärdatei nicht übereinstimmt; dies entspricht der Option -I. Wenn TYP Text ist, verarbeitet grep eine Binärdatei, als wäre sie Text; dies entspricht der Option -a. Warnung: grep –binary-files=text kann binären Müll ausgeben, was unangenehme Nebeneffekte haben kann, wenn es sich bei der Ausgabe um ein Terminal handelt und der Terminaltreiber einiges davon als Befehle interpretiert. -D ACTION, –devices=ACTION Wenn eine Eingabedatei ein Gerät, FIFO oder Socket ist, verwenden Sie ACTION, um sie zu verarbeiten. Standardmäßig ist ACTION read, was bedeutet, dass Geräte wie normale Dateien gelesen werden. Wenn ACTION skip ist, werden die Geräte stillschweigend übersprungen. -d ACTION, –directories=ACTION Wenn eine Eingabedatei ein Verzeichnis ist, verwenden Sie ACTION, um es zu verarbeiten. Standardmäßig ist ACTION read, was bedeutet, dass Verzeichnisse wie normale Dateien gelesen werden. Wenn ACTION skip ist, werden Verzeichnisse übersprungen. Wenn ACTION recurse ist, liest grep alle Dateien unter jedem Verzeichnis, rekursiv; dies entspricht der Option -r. –exclude=GLOB Überspringt Dateien, deren Basisname mit GLOB übereinstimmt (unter Verwendung von Wildcard-Matching). Ein Dateiname glob kann *, ? und als Platzhalter verwenden, und \, um einen Platzhalter oder einen Backslash wörtlich zu zitieren. –exclude-from=DATEI Überspringt Dateien, deren Basisname mit einem der aus DATEI gelesenen Dateinamen-Globus übereinstimmt (unter Verwendung von Platzhaltern wie unter –exclude beschrieben). –exclude-dir=DIR Schließt Verzeichnisse, die dem Muster DIR entsprechen, von rekursiven Suchen aus. -I
Verarbeitet eine Binärdatei so, als ob sie keine übereinstimmenden Daten enthielte; dies entspricht der Option –binary-files=without-match.
–include=GLOB Sucht nur nach Dateien, deren Basisname mit GLOB übereinstimmt (unter Verwendung von Platzhaltern, wie unter –exclude beschrieben). -R, -r, –recursive Liest alle Dateien in jedem Verzeichnis, rekursiv; dies entspricht der Option -d recurse.
Andere Optionen
–line-buffered Zeilenpufferung bei der Ausgabe verwenden. Dies kann zu Leistungseinbußen führen. –mmap
Wenn möglich, verwende den Systemaufruf mmap(2), um Eingaben zu lesen, anstelle des Standard-Systemaufrufs read(2). In manchen Situationen bringt –mmap eine bessere Leistung. Allerdings kann –mmap zu undefiniertem Verhalten führen (einschließlich Core-Dumps), wenn eine Eingabedatei schrumpft, während grep arbeitet, oder wenn ein E/A-Fehler auftritt.
-U, –binary Behandelt die Datei(en) als Binärdatei. Standardmäßig errät grep unter MS-DOS und MS-Windows den Dateityp anhand des Inhalts der ersten 32 KB, die aus der Datei gelesen werden. Wenn grep entscheidet, dass es sich um eine Textdatei handelt, entfernt es die CR-Zeichen aus dem ursprünglichen Dateiinhalt (damit reguläre Ausdrücke mit ^ und $ korrekt funktionieren). Die Angabe von -U setzt diese Vermutung außer Kraft und bewirkt, dass alle Dateien gelesen und wortwörtlich an den Abgleichmechanismus übergeben werden; wenn die Datei eine Textdatei mit CR/LF-Paaren am Ende jeder Zeile ist, führt dies dazu, dass einige reguläre Ausdrücke fehlschlagen. Diese Option hat keine Auswirkung auf andere Plattformen als MS-DOS und MS -Windows. -z, –null-data Behandelt die Eingabe als eine Reihe von Zeilen, die jeweils durch ein Null-Byte (das ASCII-Zeichen NUL) anstelle eines Zeilenumbruchs abgeschlossen werden. Wie die Optionen -Z oder –null kann diese Option mit Befehlen wie sort -z verwendet werden, um beliebige Dateinamen zu verarbeiten.
Reguläre Ausdrücke
Ein regulärer Ausdruck ist ein Muster, das eine Menge von Zeichenketten beschreibt. Reguläre Ausdrücke werden analog zu arithmetischen Ausdrücken konstruiert, indem verschiedene Operatoren verwendet werden, um kleinere Ausdrücke zu kombinieren.
grep versteht drei verschiedene Versionen der Syntax regulärer Ausdrücke: „basic“, „extended“ und „perl“. In GNU grep gibt es keinen Unterschied in der verfügbaren Funktionalität zwischen der einfachen und der erweiterten Syntax. In anderen Implementierungen sind die einfachen regulären Ausdrücke weniger leistungsfähig. Die folgende Beschreibung gilt für die erweiterten regulären Ausdrücke; die Unterschiede zu den einfachen regulären Ausdrücken werden anschließend zusammengefasst. Reguläre Ausdrücke in Perl bieten zusätzliche Funktionalität und sind in pcresyntax(3) und pcrepattern(3) dokumentiert, aber möglicherweise nicht auf jedem System verfügbar.
Die grundlegenden Bausteine sind reguläre Ausdrücke, die auf ein einzelnes Zeichen passen. Die meisten Zeichen, einschließlich aller Buchstaben und Ziffern, sind reguläre Ausdrücke, die auf sich selbst passen. Jedes Metazeichen mit besonderer Bedeutung kann in Anführungszeichen gesetzt werden, indem ihm ein umgekehrter Schrägstrich vorangestellt wird.
Der Punkt . passt auf jedes einzelne Zeichen.
Zeichenklassen und Klammerausdrücke
Ein Klammerausdruck ist eine Liste von Zeichen, die von . Er passt auf jedes einzelne Zeichen in dieser Liste; wenn das erste Zeichen der Liste das Caret ^ ist, passt er auf jedes Zeichen, das nicht in der Liste enthalten ist. Zum Beispiel passt der reguläre Ausdruck auf jede einzelne Ziffer.
Innerhalb eines Klammerausdrucks besteht ein Bereichsausdruck aus zwei durch einen Bindestrich getrennten Zeichen. Er passt auf jedes einzelne Zeichen, das zwischen den beiden Zeichen liegt, einschließlich der Sortierreihenfolge und des Zeichensatzes des Gebietsschemas. Im Standardgebietsschema C entspricht dies zum Beispiel. Viele Gebietsschemata sortieren die Zeichen in Wörterbuchreihenfolge, und in diesen Gebietsschemata ist typischerweise nicht äquivalent zu ; es könnte zum Beispiel äquivalent zu sein. Um die traditionelle Interpretation von Klammerausdrücken zu erhalten, können Sie das Gebietsschema C verwenden, indem Sie die UmgebungsvariableLC_ALL auf den Wert C setzen.
Schließlich sind bestimmte benannte Zeichenklassen in Klammerausdrücken vordefiniert, wie folgt. Ihre Namen sind selbsterklärend und lauten: , , , , , , , , , , , und . Zum Beispiel bedeutet ] , mit der Ausnahme, dass die letztere Form von der Locale und der ASCII-Zeichenkodierung abhängt, während die erstere unabhängig von Locale und Zeichensatz ist. (Beachten Sie, dass die Klammern in diesen Klassennamen Teil der symbolischen Namen sind und zusätzlich zu den Klammern, die den Klammerausdruck begrenzen, gesetzt werden müssen). Die meisten Meta-Zeichen verlieren innerhalb von Klammerausdrücken ihre besondere Bedeutung. Um ein Literal ] einzufügen, setzen Sie es an die erste Stelle der Liste. Um ein ^-Literal einzufügen, setzen Sie es an eine beliebige Stelle, aber nicht an die erste. Um ein Literal – einzuschließen, setzen Sie es an den letzten Platz.
Verankerung
Das Caret ^ und das Dollarzeichen $ sind Metazeichen, die mit der leeren Zeichenfolge am Anfang bzw. Ende einer Zeile übereinstimmen.
Das Backslash-Zeichen und spezielle Ausdrücke
Die Symbole \< und \> entsprechen der leeren Zeichenfolge am Anfang bzw. Ende eines Wortes. Das Symbol \b entspricht der leeren Zeichenkette am Rande eines Wortes, und \B entspricht der leeren Zeichenkette, sofern sie nicht am Rande eines Wortes steht. Das Symbol \w ist ein Synonym für] und \W ist ein Synonym für ].
Wiederholung
Einem regulären Ausdruck kann einer von mehreren Wiederholungsoperatoren folgen:
Das vorangehende Element ist optional und wird höchstens einmal gefunden.
*
Das vorangehende Element wird null oder mehr Mal gefunden.
+
Das vorangehende Element wird ein oder mehrere Male gefunden.
{n}
Der vorhergehende Eintrag wird genau n-mal gefunden.
{n,}
Der vorhergehende Eintrag wird n-mal oder öfter gefunden.
{,m}
Das vorangehende Element trifft höchstens m-mal zu.
{n,m}
Das vorangehende Element trifft mindestens n-mal, aber höchstens m-mal zu.
Verkettung
Zwei reguläre Ausdrücke können verkettet werden; der resultierende reguläre Ausdruck passt auf eine beliebige Zeichenkette, die durch Verkettung zweier Teilzeichenketten gebildet wird, die jeweils auf die verketteten Ausdrücke passen.
Alternation
Zwei reguläre Ausdrücke können durch den Infix-Operator | verbunden werden; der resultierende reguläre Ausdruck passt auf jede Zeichenkette, die auf einen der beiden alternativen Ausdrücke passt.
Vorrang
Die Wiederholung hat Vorrang vor der Verkettung, die wiederum Vorrang vor der Alternation hat. Ein ganzer Ausdruck kann in Klammern eingeschlossen werden, um diese Vorrangregeln außer Kraft zu setzen und einen Unterausdruck zu bilden.
Rückverweise und Unterausdrücke
Der Rückverweis \n, wobei n eine einzelne Ziffer ist, passt auf die Teilzeichenkette, die zuvor durch den n-ten Klammerausdruck des regulären Ausdrucks gefunden wurde.
Grundlegende vs. erweiterte reguläre Ausdrücke
In grundlegenden regulären Ausdrücken verlieren die Metazeichen ?, +, {, |, (, und ) ihre besondere Bedeutung; stattdessen werden die Rückverweise \?, \+, \{, \|, \(, und \) verwendet.
Traditionelles egrep unterstützt das Metazeichen { nicht, und einige egrep-Implementierungen unterstützen stattdessen \{, so dass portable Skripte { in grep -E-Mustern vermeiden sollten und stattdessen ein literales { verwenden sollten.
GNU grep -E versucht, die traditionelle Verwendung zu unterstützen, indem es annimmt, dass { nicht speziell ist, wenn es der Beginn einer ungültigen Intervallangabe wäre. Beispielsweise sucht der Befehl grep -E ‚{1‘ nach der zweistelligen Zeichenfolge {1, anstatt einen Syntaxfehler im regulären Ausdruck zu melden. POSIX.2 erlaubt dieses Verhalten als Erweiterung, aber portable Skripte sollten es vermeiden.
Umgebungsvariablen
Das Verhalten von grep wird durch die folgenden Umgebungsvariablen beeinflusst.
Das Gebietsschema für die Kategorie LC_foo wird durch die Untersuchung der drei Umgebungsvariablen LC_ALL, LC_foo, LANG in dieser Reihenfolge festgelegt. Die erste dieser Variablen, die gesetzt wird, gibt das Gebietsschema an. Wenn zum Beispiel LC_ALL nicht gesetzt ist, aber LC_MESSAGES aufpt_BR gesetzt ist, wird das brasilianisch-portugiesische Gebietsschema für die Kategorie LC_MESSAGES verwendet. Das Gebietsschema C wird verwendet, wenn keine dieser Umgebungsvariablen gesetzt ist, wenn der Gebietsschemakatalog nicht installiert ist oder wenn grep nicht mit nationaler Sprachunterstützung ( NLS ) kompiliert wurde.
GREP_OPTIONS Diese Variable gibt Standardoptionen an, die vor alle expliziten Optionen gesetzt werden. Wenn GREP_OPTIONS zum Beispiel ‚–binary-files=without-match –directories=skip‘ ist, verhält sich grep so, als ob die beiden Optionen –binary-files=without-match und -directories=skip vor allen expliziten Optionen angegeben worden wären. Optionsangaben werden durch Leerzeichen getrennt. Ein Backslash umgeht das nächste Zeichen, so dass er verwendet werden kann, um eine Option anzugeben, die Leerzeichen oder einen Backslash enthält. GREP_COLOR Diese Variable gibt die Farbe an, mit der übereinstimmender (nicht leerer) Text hervorgehoben wird. Sie ist zugunsten von GREP_COLORS veraltet, wird aber weiterhin unterstützt. Diemt-, ms- und mc-Funktionen von GREP_COLORS haben Vorrang vor ihr. Sie kann nur die Farbe angeben, mit der der übereinstimmende, nicht leere Text in einer übereinstimmenden Zeile hervorgehoben wird (eine ausgewählte Zeile, wenn die Befehlszeilenoption -v weggelassen wird, oder eine Kontextzeile, wenn -v angegeben ist). Der Standardwert ist 01;31, was einen fetten roten Vordergrundtext auf dem Standardhintergrund des Terminals bedeutet. GREP_COLORS Legt die Farben und andere Attribute fest, die zur Hervorhebung verschiedener Teile der Ausgabe verwendet werden. Sein Wert ist eine durch Doppelpunkte getrennte Liste von Fähigkeiten, die standardmäßig ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 lautet, wobei die booleschen Fähigkeiten rv und ne weggelassen werden (d.h. false). Unterstützt werden die folgenden Fähigkeiten. sl=
SGR-Teilstring für ganze ausgewählte Zeilen (d. h. passende Zeilen, wenn die Befehlszeilenoption -v weggelassen wird, oder nicht passende Zeilen, wenn -v angegeben ist). Die Voreinstellung ist leer (d.h. das Standard-Farbpaar des Terminals).
cx=
SGR-Teilstring 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 rv-Fähigkeit als auch die Befehlszeilenoption -v angegeben sind, gilt sie stattdessen für ausgewählte nicht passende Zeilen. Die Voreinstellung ist leer (d.h. das Standard-Farbpaar des Terminals).
rv
Boolescher Wert, der die Bedeutung der Fähigkeiten sl= und cx= umkehrt (vertauscht), wenn die Befehlszeilenoption -v angegeben ist. Der Standardwert ist false (d.h. die Fähigkeit wird weggelassen).
mt=01;31
SGR-Teilzeichenfolge für den Abgleich von nicht leerem Text in einer beliebigen übereinstimmenden Zeile (d.h. eine ausgewählte Zeile, wenn die Befehlszeilenoption -v weggelassen wird, oder eine Kontextzeile, wenn -v angegeben ist). Diese Einstellung ist gleichbedeutend mit dem gleichzeitigen Setzen von ms= und mc= auf denselben Wert. Die Voreinstellung ist ein fetter roter Textvordergrund über dem aktuellen Zeilenhintergrund.
ms=01;31
SGR-Teilzeichenfolge für passenden nicht leeren Text in einer ausgewählten Zeile. (Dies wird nur verwendet, wenn die Befehlszeilenoption -v weggelassen wird.) Die Wirkung derl=-Fähigkeit (oder cx=, wenn rv) bleibt aktiv, wenn dies eintritt. Die Voreinstellung ist ein fetter roter Textvordergrund über dem aktuellen Zeilenhintergrund.
mc=01;31
SGR-Teilstring zum Abgleich von nicht-leerem Text in einer Kontextzeile. (Dies wird nur verwendet, wenn die Befehlszeilenoption -v angegeben ist.) Die Auswirkung der Fähigkeitcx= (oder sl= bei rv) bleibt aktiv, wenn dies eintritt. Die Voreinstellung ist ein fetter roter Text im Vordergrund über dem aktuellen Zeilenhintergrund.
fn=35
SGR-Teilstring für Dateinamen, die einer beliebigen Inhaltszeile vorangestellt sind. Die Voreinstellung ist ein magentafarbener Textvordergrund über dem Standardhintergrund des Terminals.
ln=32
SGR Teilstring für Zeilennummern, die einer beliebigen Inhaltszeile vorangestellt sind. Die Voreinstellung ist ein grüner Textvordergrund über dem Standardhintergrund des Terminals.
bn=32
SGR-Teilstring für Byte-Offsets, die einer beliebigen Inhaltszeile vorangestellt werden. Die Voreinstellung ist ein grüner Textvordergrund über dem Standardhintergrund des Terminals.
se=36
SGR-Teilstring für Trennzeichen, die zwischen ausgewählten Zeilenfeldern (:), zwischen Kontextzeilenfeldern (-) und zwischen Gruppen benachbarter Zeilen eingefügt werden, wenn ein Kontext ungleich Null angegeben ist (–). Die Voreinstellung ist ein cyanfarbener Textvordergrund über dem Standardhintergrund des Terminals.
ne
Boolescher Wert, der das Löschen bis zum Zeilenende mit Erase in Line (EL) to Right (\33. LC_ALL, LC_CTYPE, LANG Diese Variablen geben das Gebietsschema für die Kategorie LC_CTYPE an, die die Art der Zeichen bestimmt, z. B. welche Zeichen Leerzeichen sind. LC_ALL, LC_MESSAGES, LANG Diese Variablen geben das Gebietsschema für die Kategorie LC_MESSAGES an, das die Sprache bestimmt, die grep für Meldungen verwendet. Die Standard-Locale verwendet amerikanisches Englisch für Meldungen. POSIXLY_CORRECT Wenn diese Variable gesetzt ist, verhält sich grep so, wie es POSIX.2 verlangt; andernfalls verhält sich grep eher wie andere GNU-Programme.POSIX.2 verlangt, dass Optionen, die Dateinamen folgen, wie Dateinamen behandelt werden müssen; standardmäßig werden solche Optionen an den Anfang deroperand -Liste gesetzt und als Optionen behandelt. Außerdem verlangt POSIX.2, dass nicht erkannte Optionen als „illegal“ diagnostiziert werden, aber da sie nicht wirklich gegen das Gesetz verstoßen, ist die Voreinstellung, sie als „ungültig“ zu diagnostizieren. POSIXLY_CORRECT deaktiviert auch _N_GNU_nonoption_argv_flags_, wie unten beschrieben. _N_GNU_nonoption_argv_flags_ (Hier ist N die numerische Prozess-ID von grep.) Wenn das i-te Zeichen des Wertes dieser Umgebungsvariablen 1 ist, wird der i-te Operand von grep nicht als Option betrachtet, selbst wenn er als solche erscheint. Eine Shell kann diese Variable für jeden Befehl, den sie ausführt, in die Umgebung setzen, um anzugeben, welche Operanden das Ergebnis einer Platzhalterexpansion für Dateinamen sind und daher nicht als Optionen behandelt werden sollen. Dieses Verhalten ist nur mit der GNU C-Bibliothek verfügbar, und nur, wenn POSIXLY_CORRECT nicht gesetzt ist.
Exit-Status
Normalerweise ist der Exit-Status 0, wenn ausgewählte Zeilen gefunden werden, und sonst 1. Der Exit-Status ist jedoch 2, wenn ein Fehler aufgetreten ist, es sei denn, die Option -q oder–quiet oder –silent wird verwendet und eine ausgewählte Zeile wird gefunden. Beachten Sie jedoch, dass POSIX nur für Programme wiegrep, cmp und diff vorschreibt, dass der Exit-Status im Fehlerfall größer als 1 sein muss; es ist daher ratsam, im Sinne der Portabilität eine Logik zu verwenden, die auf diese allgemeine Bedingung testet, anstatt eine strikte Gleichheit mit 2 anzustreben.
Copyright
Copyright 1998-2000, 2002, 2005-2010 Free Software Foundation, Inc.
Dies ist freie Software; siehe die Quelle für Kopierbedingungen. Es gibt KEINE Garantie; nicht einmal für die MARKTREIFE oder die EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
Fehler
Fehler melden
Fehlerberichte per E-Mail an <[email protected]>, eine Mailingliste, deren Webseite <http://lists.gnu.org/mailman/listinfo/bug-grep>.grep’s Savannah bug tracker befindet sich unter <http://savannah.gnu.org/bugs/?group=grep>.
Bekannte Bugs
Große Wiederholungszahlen im {n,m}-Konstrukt können dazu führen, dass grep viel Speicher verbraucht. Außerdem benötigen bestimmte andere reguläre Ausdrücke exponentiell viel Zeit und Platz und können dazu führen, dass grep der Speicher ausgeht.
Rückverweise sind sehr langsam und benötigen exponentiell viel Zeit.
Siehe auch
Regelmäßige Handbuchseiten
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), pcresyntax(3), pcrepattern(3),terminfo(5), glob(7), regex(7).
POSIX Programmer’s Manual Page
grep(1p).
TeXinfo-Dokumentation
Die vollständige Dokumentation für grep wird als TeXinfo-Handbuch gepflegt. Wenn die Programme info und grep bei Ihnen richtig installiert sind, sollten Sie mit dem Befehl info grep Zugriff auf das vollständige Handbuch erhalten.
Anmerkungen
GNU ist nicht Unix, aber Unix ist ein Biest; seine Pluralform ist Unixen.