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

Syntax

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

Befehle

Befehl Effekt
--help zeigt Informationen zur Benutzung an und beendet das Programm.
-V, --version gibt die Versionsnummer von grep und beendet das Programm.
-E, --extended-regexp MUSTER als erweitertere regulärere Ausdrücke (extended regular expressions) 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, *BRE*s, 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.
-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, so dass Zeichen, die sich nur darin unterscheiden, jeweils auf ihr Gegenstück passen.
-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
-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.
-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
-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).
-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 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.
-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 Erweiterung 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 </B>, 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 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. 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.
--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.

Beispiele

Befehl Auswirkung
grep -R word . Findet alle Vorkommnisse von word im aktuellen Verzeichnis und den Unterverzeichnissen.
grep -n "table" file.txt Findet all Vorkommen von table in file.txt und zeigt die Zeile an.
grep -B 2 -A 2 echo * Listet all Vorkommnisse von echo im aktuellen Verzeichnis mit den vier umliegenden Zeilen.