wfmedia.ch

grep

Mit grep lassen sich Dateien nach bestimmten Textstücken durchsuchen. Die Suchmuster werden "regular expressions" (auf Deutsch: regulärer Ausdruck) genannt. Sie sind vielfältig einsetzbar, und werden nicht nur von grep verwendet.

Reguläre Ausdrücke
Bevor es an die Beschreibung des Befehls geht, soll noch kurz erläutert werden, wie man das, was man sucht, überhaupt beschreibt. Die Beschreibung eines Textmusters wird als regular expression (regulärer Ausdruck) bezeichnet. Sie sind ähnlich mathematischen Ausdrücken aufgebaut: kleinere Untereinheiten werden durch Operatoren miteinander verknüpft. grep verwendet drei Variationen von regular expressions: basic, extended und PCRE (Perl-compatible regular expressions). Die folgenden Beschreibungen beziehen sich auf die extended Variante. Um diese beim Aufruf von grep zu verwenden, kann es entweder mit dem Parameter -E aufgerufen werden, oder durch den alternativen Befehl egrep.

Die grundlegenden Einheiten eines regulären Ausdrucks sind solche, die ein einzelnes Zeichen beschreiben. Die meisten Zeichen (darunter alle Buchstaben und Ziffern) passen auf sich selbst, zum Beispiel passt "4" auf alle Vieren in einer Zeichenkette, also z.B. 456, PMA4Life, Hausnummer4 usw... . Alle Zeichen mit einer besonderen Bedeutung (wie zum Beispiel der Punkt ".") lassen sich durch das Voranstellen eines Rückstrichs "\" ihrer besonderen Bedeutung berauben. Um also einen Punkt "." zu finden muss man in dem regulären Ausdruck ein "\." verwenden. Um den Rückstrich selbst zu finden, benötigt man ein "\\".

Parameter Beschreibung
-A NUM gibt zusätzlich NUM Zeilen nach der passenden Zeile aus.
-a text Verarbeite eine binäre Datei, als wäre sie Text. Dies entspricht der Option --binary-files=text.
-B NUM gibt zusätzlich NUM Zeilen vor der passenden Zeile aus.
-b gibt den Byte-Offset innerhalb der Datei vor jeder gefundenen Zeile an.
-C NUM gibt zusätzlich NUM Zeilen von Kontext aus. Zwischen zusammenhängende Gruppen von Treffern werden Zeilen mit "–" eingefügt.
-c unterdrückt die normale Ausgabe und gibt stattdessen für jede Eingabedatei an, wieviele Zeilen auf die regular expression passen.
-E Verwendet die extended Variante beim Interpretieren der übergebenen regular expression.
-e Muster verwende Muster als regular expression. Nützlich um Ausdrücke zu schützen, die mit einem - beginnen.
-F interpretiert das übergebene Muster als eine Liste von festen Zeichenketten, die durch Zeilenumbrüche voneinander getrennt sind.
-f Datei beziehe die Muster aus Datei, eines je Zeile. Eine leere Datei enthält keine Muster und passt somit auf keinen String.
-H gibt den Dateinamen vor jedem Treffer aus.
-h unterdrückt die Ausgabe des Dateinamens, wenn mehrere Dateien durchsucht werden.
-I schließt Binärdateien aus.
-i unterscheide nicht zwischen Groß- und Kleinschreibung.
-L unterdrückt die normale Ausgabe und gibt stattdessen die Dateinamen von allen Dateien, die keine Treffer enthalten aus. Die Bearbeitung stoppt, sobald ein Treffer auftritt.
-l unterdrückt die normale Ausgabe und gibt stattdessen die Dateinamen von allen Dateien, die Treffer enthalten aus. Die Bearbeitung stoppt, sobald ein Treffer auftritt.
-n gibt die Zeilennummer vor jedem Treffer aus.
-o gibt nur die passende Zeichenkette aus.
-P verwendet Perl regular expressions.
-q schreibt nichts auf die Standardausgabe und stoppt beim ersten Treffer.
-R -r liest alle Dateien unter jedem Verzeichnis rekursiv.
-v Invertiert die Suche und liefert alle Zeilen die nicht auf das gesuchte Muster passen.
-w wählt nur solche Zeilen aus, deren Treffer aus vollständigen Wörtern bestehen.
back