1. Home
  2. Linux
  3. Systemadministration
  4. grep (Global Regular Expression Print)

grep (Global Regular Expression Print)

grep ist ein sehr nützliches Tool in unixoiden Betriebssystemen, um Zeichenketten in Dateien oder Datenströmen zu suchen und zu filtern. grep Filter können kaskadiert werden und besitzen einen umfangreichen Parametersatz zum Anpassen der Filter.

Beispiele

Folgender Aufruf ist der einfachst Denkbare und sucht in der angegebenen Datei nach dem String PATTERN:

$ grep PATTERN /var/log/systemlog

Folgender Aufruf sucht in der angegebenen Datei nach dem String Pattern und filtert diesen aus der Ausgabe von less heraus (-v):

$ grep -v PATTERN /var/log/systemlog

Diese beiden Filter können auch kombiniert werden. Folgender Aufruf sucht in der angegebenen Datei den String PATTERN_1 und leitet die Ausgabe (Pipe) in die Standardeingabe eines weiteren Filters und filtert den String PATTERN_2 heraus:

$ grep PATTERN_1 /var/log/systemlog | grep -v PATTERN_2

Wenn in der Ausgabe mehrere Strings gesucht werden sollen, kann grep mit dem Parameter -E angewiesen werden den Suchstring als Regulären Ausdruck zu interpretieren. Das Pipe Symbol | ist dann der UND-Operator. Folgender Aufruf sucht in der angegebenen Datei nach den Strings PATTERN_1, PATTERN_2 und PATTERN_3:

$ grep -E 'PATTERN_1|PATTERN_2|PATTERN_3' /var/log/systemlog

Mit dem veraltetem Kommando egrep kann mit folgender Syntax das gleiche Ergebnis erzielt werden:

$ egrep 'PATTERN_1|PATTERN_2|PATTERN_3' /var/log/systemlog

Besonders herausfordern sind Zeichenfolgen, welche Steuerzeichen enthalten, diese aber nicht als solche interpretiert werden sollen. Mit fgrep oder grep -F kann man die Suche so einschränken, dass Steuerzeichen wie zB $, *, [, |, (, ) und \ ihre eigentliche Bedeutung behalten und nicht als Bestandteil der Syntax eines Regulären Ausdrucks. Da solche Zeichen auch in der Shell eine besondere Bedeutung haben, muss der gesamte Suchstring in einfache Hochkommas eingeschlossen werden '...':

$ grep -F 'C:\logs\SUCHSTRING' *

Zu beachten ist, dass somit im gesuchten String keine Wildcards wie zB ein Asterisk * nicht mehr möglich ist.

Von Standarteingabe lesen

Die Ausgabe eines anderen Programms kann auch als Standardeingabe in grep gepipt werden. Auch hier können mehrere Filter kombiniert werden:

$ less /var/log/systemlog | grep PATTERN
$ less /var/log/systemlog | grep PATTERN_1 | grep -v PATTERN_2

Such-String farbig hervorheben

Gerade bei der Suche in großen Datenmengen und mit mehreren kombinierten Suchpattern kann die Ausgabe schnell unübersichtlich werden. Abhilfe schafft hier das farbige highlighten der Such-Strings --color:

$ grep --color -E 'PATTERN_1|PATTERN_2|PATTERN_3' /var/log/systemlog

Soll das farbige highlighten durch eine gepipte Ausgabe erhalten werden, kann das mit --color=always angewiesen werden:

$ grep --color=always PATTERN_1 /var/log/systemlog | grep -v PATTERN_2
Updated on 3. Januar 2023

Was this article helpful?

Related Articles