Kommandozeile Schnellstart – grep Search

Übersicht:

Willkommen zur Lektion zum Thema grep.

Der Befehl grep leitet sich ursprünglich vom englischen Ausdruck "Global Regular Expressions Print" ab. Grob gesagt ist grep ein Werkzeug zur Suche und Filterung von Zeichenketten. Da die Manipulation von Text eine der wichtigsten Aufgaben zur Arbeit auf der Kommandozeile gehört, ist grep eines der am häufigsten eingesetzen Werkzeuge.

Anwendung und Syntax:

Wie bereits erwähnt, dient grep zur Filterung und zum Suchen von Mustern in Zeichenketten. Die Grundsyntax ist dabei folgendermaßen aufgebaut

 grep <Suchmuster> <Datei>

Dabei liefert grep alle gefundenden Suchmuster in der angegeben Datei zurück. Sehen wir uns dazu ein Beispiel an:

grep localhost /etc/hosts

Diese Operation liefert auf einem Standardlinuxsystem in aller Regel zwei Zeilen zurück in denen das Wort localhost enthalten ist (einmal für IPv4 und einmal für IPv6).

Suchmuster

Das Suchmuster von grep ist ein sogenannter regulärer Ausdruck. Im einfachsten Fall kann ein regulärer Ausdruck einfach wie im Beispiel oben eine Zeichenkette sein. Es ist aber auch möglich, mit sogenannten Wildcards zu arbeiten. Somit ist es möglich, dass ein Suchmuster auf mehrere Begriffe angewandt werden kann. Wir wollen uns hierzu einige Beispiele ansehen:

Tiere.txt:

Haus
haus
Maus
Fledermaus
Elefant
Esel

Beispiel 1:

grep "haus" codes/tiere.txt

Ergebnis:

  • haus

Hier entspricht das Suchmuster einem Stringliteral und das Ergebnis der Suche entspricht dann eben genau diesem String.

Beispiel 2:

grep ".aus" codes/tiere.txt

Ergebnis:

  • haus
  • haus
  • Maus

Hier verwenden wir die Wildcard ".". Der Punkt steht hierbei für ein beliebiges Zeichen. Dementsprechend liefert grep alle Zeilen, die Worte mit mindestens vier Buchstaben, die mit "aus" enden zurück.

Beispiel 3:

grep "^E." codes/tiere.txt

Ergebnis:

  • Elefant
  • Esel

Hier verwenden wir den regulären Ausdruck "^E." Dieser Ausdruck beschreibt, dass das erste Zeichen in der Zeile ein großes E sein muss, gefolgt von einem beliebigen anderen Zeichen.

Weitere Beispiele zu konstruieren, würde deutlich den Rahmen der Einheit sprengen. Reguläre Ausdrücke können sehr kompliziert werden. Dafür lassen sie sehr spezifische Suchen auf nahezu beliebige Zeichenketten zu. grep zu meistern, bedarf einiger Übung und Erfahrung. Es gibt ganze Bücher zum Thema grep und zu regulären Ausdrücken.

Parameter

Der grep-Befehl hat einige nützliche Parameter. Wie immer kann eine komplette Liste aller Parameter über die man-Page abgefragt werden.

-i: case-insensitive search. Groß- und Kleinschreibung wird ignoriert

-R: Rekursive Suche über mehrere Verzeichnisse hinweg

Übungen:

  1. Liste alle Autos, die den Buchstaben b enthalten
     grep "b" codes/autos.txt
  2. Liste alle Autos, die den Buchstaben m als ersten Buchstaben enthalten.
    grep "^m." codes/autos.txt

Zusammenfassung:

Das Programm grep ist ein sehr mächtiges Werkzeug zur Suche von Mustern in Zeichenketten. grep unterstützt reguläre Ausdrücke, mit denen nicht nur Literale, sondern auch ganze Muster von Zeichenketten gesucht und gefiltert werden können.