Logs durchsuchen, Konfigurationen anpassen, Ausgaben auswerten: Für die Textverarbeitung im Terminal gibt es drei mächtige Klassiker – grep, sed und awk. Wer sie beherrscht, spart täglich Zeit. In dieser Anleitung lernst du die Grundlagen von grep, sed und awk anhand praktischer Beispiele.
grep: Zeilen finden
grep durchsucht Text nach einem Muster und gibt die passenden Zeilen aus. Das einfachste Beispiel sucht nach „error“ in einer Datei:
grep "error" logfile.txtDie wichtigsten Optionen machen grep richtig nützlich:
| Option | Wirkung |
|---|---|
-i | Groß-/Kleinschreibung ignorieren |
-r | Rekursiv durch Verzeichnisse suchen |
-n | Zeilennummern anzeigen |
-v | Nur Zeilen anzeigen, die NICHT passen |
-c | Nur die Anzahl der Treffer zählen |
Besonders praktisch in Kombination mit einer Pipe, etwa um journalctl-Ausgaben zu filtern: journalctl | grep ssh.
sed: Text ersetzen
sed (Stream Editor) bearbeitet Text zeilenweise – am häufigsten zum Suchen und Ersetzen. Der folgende Befehl ersetzt jedes „alt“ durch „neu“:
sed "s/alt/neu/g" datei.txtDas s steht für „substitute“, das g für „global“ (alle Vorkommen pro Zeile). Standardmäßig gibt sed das Ergebnis nur aus. Um die Datei direkt zu ändern, nutzt du -i:
sed -i "s/alt/neu/g" datei.txtVorsicht: -i überschreibt die Datei ohne Nachfrage – teste den Befehl vorher ohne -i.
awk: Spalten auswerten
awk ist ideal für Text in Spalten. Es zerlegt jede Zeile in Felder, die du über $1, $2 usw. ansprichst. Dieser Befehl gibt die erste und dritte Spalte aus:
awk '{print $1, $3}' datei.txtMit -F legst du das Trennzeichen fest – etwa einen Doppelpunkt, um die Benutzernamen aus der /etc/passwd zu ziehen:
awk -F: '{print $1}' /etc/passwdDie drei Werkzeuge kombinieren
Ihre volle Stärke entfalten die Tools per Pipe. Ein Beispiel, das die häufigsten IP-Adressen in einem Zugriffslog ermittelt:
grep "GET" access.log | awk '{print $1}' | sort | uniq -c | sort -rn | headSolche Einzeiler sind das Rückgrat vieler Bash-Skripte.
Praxisbeispiel: ein Logfile analysieren
Ein typischer Alltagsfall: Du willst wissen, welche Fehler in einem Logfile am häufigsten auftreten. Zuerst filterst du mit grep die Fehlerzeilen, dann zählst du sie:
grep -i "error" app.log | sort | uniq -c | sort -rn | headuniq -c zählt identische Zeilen, sort -rn sortiert absteigend nach Häufigkeit. So siehst du auf einen Blick die häufigsten Fehler. Solche Auswertungen ergänzen sich hervorragend mit journalctl für systemd-Dienste.
Häufige Fragen
Wann nutze ich grep, wann awk?
grep ist für einfaches Finden von Zeilen gedacht. Sobald du bestimmte Spalten extrahieren oder rechnen willst, ist awk das richtige Werkzeug. sed liegt dazwischen und ist auf das Ersetzen spezialisiert.
Verändert grep meine Dateien?
Nein, grep liest nur und gibt Treffer aus. Ändernd wirkt allein sed mit der Option -i – deshalb dort besonders vorsichtig sein.
Kann ich reguläre Ausdrücke verwenden?
Ja, alle drei Werkzeuge unterstützen reguläre Ausdrücke. Für erweiterte Muster nutzt du bei grep die Option -E (bzw. egrep).
Fazit
grep findet, sed ersetzt, awk wertet Spalten aus – mit diesen drei Werkzeugen bewältigst du praktisch jede Textaufgabe im Terminal. Per Pipe kombiniert werden sie zu mächtigen Einzeilern. Es lohnt sich, die Grundbefehle im Alltag zu üben; sie gehören zum wichtigsten Handwerkszeug unter Linux.

