grep & Regex
Text, Pipes & Filter
Was ist grep?
grep durchsucht Text nach Zeilen, die zu einem Muster passen, und gibt diese aus. Der Name kommt von „globally search for a regular expression and print“. Es ist eines der wichtigsten Werkzeuge in Pipelines – zum Filtern von Logs, Konfigurationen und Programmausgaben.
Grundsyntax
$ grep "muster" datei.txt $ ps aux | grep nginx # in einer Pipe filtern
Die wichtigsten Optionen
| Option | Wirkung |
|---|---|
-i | Groß-/Kleinschreibung ignorieren |
-r | rekursiv in Verzeichnissen suchen |
-n | Zeilennummern anzeigen |
-v | umkehren: Zeilen ohne Treffer |
-c | nur die Anzahl der Treffer |
-E | erweiterte Regex (egrep) |
$ grep -in "error" server.log # ignoriert Schreibweise, mit Zeilennr. $ grep -rn "TODO" ./src # alle TODOs im Quellcode finden $ grep -v "^#" config.conf # Kommentarzeilen ausblenden
Reguläre Ausdrücke (Regex)
Das eigentliche Muster kann ein regulärer Ausdruck sein. Damit beschreibst du Textmuster flexibel:
| Muster | Bedeutung |
|---|---|
^abc | Zeile beginnt mit „abc“ |
abc$ | Zeile endet mit „abc“ |
. | ein beliebiges Zeichen |
[0-9] | eine Ziffer |
a* | beliebig viele „a“ (auch keins) |
a+ | mindestens ein „a“ (mit -E) |
$ grep -E "^[0-9]{3}-[0-9]+" daten.txt # z.B. Telefonnummern
$ grep "^$" datei.txt # leere Zeilen finden
Welche Option gibt nur Zeilen aus, die nicht passen?
Hinweise & Sicherheit
Setze das Muster immer in Anführungszeichen, damit die Shell Sonderzeichen wie * oder $ nicht selbst interpretiert. Beim Durchsuchen von Logdateien kannst du auf vertrauliche Daten (Passwörter, Tokens) stoßen – gib gefilterte Ausgaben nicht unbedacht weiter. Zum Aufbauen und Testen von Mustern hilft der Regex-Tester. Für Ersetzungen statt reinem Suchen ist sed das passende Werkzeug.