Textverarbeitung in der Pipe
Bash | Dateisystem & Rechte

Modul 2: Kommandozeile, Rechte & Dateisystem

Textverarbeitung in der Pipe

Logfile-Analyse und Datenmanipulation mit grep, awk, sed und regulären Ausdrücken (Regex)

★★★★★💬 0
Von Armin Hünniger • 11. Oktober 2026
Unter Linux gilt ein eisernes Gesetz: Everything is a file (Alles ist eine Datei) – und meistens handelt es sich dabei um schlichten Text. Ob Konfigurationsdateien in /etc oder Gigabyte-große Fehlerprotokolle in /var/log: Als Administrator musst du in der Lage...

Einführung

Unter Linux gilt ein eisernes Gesetz: Everything is a file (Alles ist eine Datei) – und meistens handelt es sich dabei um schlichten Text. Ob Konfigurationsdateien in /etc oder Gigabyte-große Fehlerprotokolle in /var/log: Als Administrator musst du in der Lage sein, riesige Datenmengen blitzschnell zu durchsuchen und zu manipulieren.

In diesem Beitrag verlassen wir die einfachen Dateibefehle und betreten die wahre Magie der Linux-Kommandozeile. Wir verknüpfen Programme miteinander und nutzen die heilige Dreifaltigkeit der Textverarbeitung: grep, awk und sed.

Befehlsketten bilden: Die Pipe (|)

Die Unix-Philosophie besagt: Schreibe kleine Programme so, dass sie nur eine einzige Sache tun, diese aber perfekt – und sorge dafür, dass sie problemlos zusammenarbeiten. Das Bindeglied dafür ist die Pipe (das senkrechte Strich-Symbol |). Sie nimmt die Ausgabe (Output) des linken Befehls und leitet sie als Eingabe (Input) direkt an den rechten Befehl weiter.

# Ein simples Beispiel: Zeige die Datei an und leite den Text an "wc -l" (Word Count Lines) weiter, um die Zeilen zu zählen
cat /var/log/syslog | wc -l

# Die letzten 100 Befehle der History anzeigen und durchblättern (mit "less")
history | tail -n 100 | less

Durch das Verknüpfen einfacher Befehle mit der Pipe entstehen hochkomplexe und extrem mächtige Werkzeuge. Du baust dir deine eigene Datenverarbeitungs-Fabrik direkt im Terminal.

Suchen und Filtern mit grep

Das Tool grep (Global Regular Expression Print) durchsucht Text zeilenweise nach bestimmten Mustern. Es ist das absolute Basiswerkzeug für die Analyse von Logfiles oder zum Durchsuchen von Quellcode.

# Durchsucht die Auth-Logdatei nach "Failed" (Fehlgeschlagene SSH-Logins)
grep "Failed" /var/log/auth.log

# Der Schalter -i ignoriert die Groß- und Kleinschreibung (findet "Error", "error", "ERROR")
grep -i "error" /var/log/syslog

# Der Schalter -v invertiert die Suche (zeigt alle Zeilen OHNE das Wort "debug")
grep -v "debug" /var/log/syslog

# Der Schalter -r durchsucht ganze Verzeichnisse rekursiv nach Inhalten
grep -r "192.168.1.10" /etc/nginx/

Daten sezieren mit awk

Während grep immer ganze Zeilen filtert, ist awk darauf spezialisiert, strukturierte Daten spaltenweise zu verarbeiten. Stell dir vor, du hast ein Nginx-Zugriffsprotokoll (Access Log) und möchtest nur die IP-Adressen (die immer in der ersten Spalte stehen) extrahieren, ohne den restlichen Log-Ballast zu sehen.

# Gibt aus jeder Zeile der Datei nur die 1. Spalte ($1) aus
awk '{print $1}' /var/log/nginx/access.log

# Gibt die 1. Spalte (IP) und die 9. Spalte (HTTP-Statuscode) durch ein Leerzeichen getrennt aus
awk '{print $1 " " $9}' /var/log/nginx/access.log

# Kombination mit Pipe: Nur die IPs von Anfragen filtern, die einen 404-Fehler erzeugt haben
grep " 404 " /var/log/nginx/access.log | awk '{print $1}'

Der Stream Editor: sed

sed (Stream Editor) wird am häufigsten genutzt, um Text in einem Datenstrom automatisch zu ersetzen (Suchen & Ersetzen). Die Syntax wirkt anfangs extrem kryptisch, ist aber sehr logisch aufgebaut: s/SUCHBEGRIFF/ERSATZ/g (s = substitute, g = global).

Befehl / Flag Wirkung
s/alt/neu/ Ersetzt nur das ERSTE Vorkommen des Wortes in jeder Zeile.
s/alt/neu/g Ersetzt ALLE Vorkommen in der gesamten Zeile (global).
-i (In-place) Überschreibt die Datei direkt auf der Festplatte, statt die Ausgabe nur im Terminal anzuzeigen.
# Einen Platzhalter in einer Konfigurationsdatei austauschen (zeigt nur das Ergebnis im Terminal, ändert die Datei NICHT)
sed 's/PORT_PLATZHALTER/8080/g' /etc/nginx/sites-available/default

# Gefährlich, aber effektiv: Die Datei direkt überschreiben (-i)
sudo sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf

# Aus einer Log-Ausgabe in der Pipe unschöne Zeichen (wie Klammern) entfernen
cat datei.txt | sed 's/\[//g' | sed 's/\]//g'
  • Achtung: Teste sed-Befehle immer erst ohne den Schalter -i. Nur wenn die Bildschirmausgabe exakt deinen Vorstellungen entspricht, führst du den Befehl scharf mit -i aus. Ein fehlerhafter RegEx kann sonst ganze Konfigurationsdateien zerstören!

Wer grep, die Pipe, awk und sed beherrscht, verwandelt die Kommandozeile in ein Präzisionsskalpell für Daten. Du musst Logfiles nicht mehr mühsam per Hand scrollen oder Konfigurationen einzeln in Editoren öffnen – du automatisierst die Textverarbeitung direkt über Standard-Befehle.

Ausblick: Wenn wir solche cleveren Befehlsketten häufiger brauchen, ist es mühsam, sie jeden Tag neu zu tippen. Im nächsten Kapitel gießen wir dieses Wissen in ausführbare Bash-Skripte und lernen, wie wir mit Variablen, Schleifen und Bedingungen echte Routine-Aufgaben automatisieren.

Diesen Impuls teilen:

Bewertung

★★★★★💬 0
Anmelden zum Bewerten

Kommentare

Noch keine Kommentare.

Anmelden, um zu kommentieren.