Files
OZM-Keks-Handbuch-v1/crumbpage-13-pipes-filters.md
Krümel Branko 431c747972 docs: fresh breadcrumbs for paths 15-17 - no more getting lost! 🍞🌲
Updated admin-vektor index and fixed linear navigation links. The Crystal Owl approves. 🦉
2025-12-11 23:38:58 +01:00

3.7 KiB

🧭 Crumbpage 13: Der Tunnel & die Pipe

Subtitle: Bits verknüpfen, filtern und weiterleiten
Pfad: 13 von 13
Schwierigkeit: (4/5)
Zeit: ~2 Stunden
Voraussetzungen: Pfad 3 (Navigation)

"Daten sind wie Wasser. Wenn du Rohre (Pipes) legst, fließen sie genau dorthin, wo du sie brauchst." 🌲


📋 Was du in diesem Pfad lernst

✓ Standard Input/Output (stdin, stdout, stderr)
✓ Die Pipe (|) - Das Verbindungsstück
✓ Redirection (>, >>, 2>) - Die Umleitung
✓ Die Filter-Werkzeuge:
  ├─ grep (Suchen)
  ├─ awk (Spalten bearbeiten)
  ├─ sed (Suchen & Ersetzen)
  └─ cat, head, tail, less

🎯 Lernziele

Nach diesem Pfad kannst du:

  • Aus riesigen Logfiles genau die eine Fehlerzeile finden
  • Befehle verketten, um komplexe Aufgaben zu lösen
  • Ausgaben in Dateien speichern
  • Verstehen, warum | grep dein bester Freund ist

🌱 Grundkonzepte

Konzept 1: Der Datenstrom

Jedes Programm hat 3 Kanäle:

  1. stdin (0): Eingang (Tastatur oder Daten)
  2. stdout (1): Ausgang (Bildschirm)
  3. stderr (2): Fehlerausgang (Bildschirm)

Konzept 2: Die Pipe |

Die Pipe nimmt den Ausgang von Programm A und steckt ihn in den Eingang von Programm B. Programm A | Programm B


🔧 Die Werkzeuge

1. cat, head, tail (Die Betrachter)

$ cat datei.txt       # Alles ausgeben
$ head -n 5 datei.txt # Die ersten 5 Zeilen
$ tail -n 5 datei.txt # Die letzten 5 Zeilen
$ tail -f log.txt     # Live zuschauen (Follow)

2. grep (Der Sucher)

$ grep "Error" log.txt        # Zeigt Zeilen mit "Error"
$ grep -i "error" log.txt     # Case-insensitive (egal ob Groß/Klein)
$ grep -r "config" /etc/      # Rekursiv in Ordnern suchen

3. | (Die Pipe) - Die Magie beginnt

# Suche "Error" in den letzten 50 Zeilen
$ tail -n 50 syslog | grep "Error"

# Wie viele Prozesse laufen?
$ ps aux | wc -l  # wc = word count (-l = lines)

4. > und >> (Die Umleitung)

# Speichere Output in Datei (Überschreiben)
$ echo "Hallo" > datei.txt

# Hänge an Datei an (Append)
$ echo "Welt" >> datei.txt

# Fehler umleiten (stderr)
$ command 2> errors.txt

5. awk & sed (Die Chirurgen) - Advanced!

awk ist super für Spalten:

# Zeige nur die PID (Spalte 2) von Prozessen
$ ps aux | awk '{print $2}'

sed ist super zum Ersetzen:

# Ersetze "foo" durch "bar" im Output
$ echo "foo is cool" | sed 's/foo/bar/'
# Output: bar is cool

💡 Best Practices

DO

# 1. Filtere früh
# Erst grep, dann sortieren. Das spart Rechenzeit.
# Gut: grep "Error" log.txt | sort
# Schlecht: sort log.txt | grep "Error"

# 2. Nutze `less` zum Lesen
# cat log.txt | less
# Damit kannst du scrollen und suchen (/suchbegriff).

DON'T

# 1. `cat` Missbrauch
# Unnötig: cat datei.txt | grep "foo"
# Besser: grep "foo" datei.txt
# (Useless use of cat award!)

🎓 Hands-On Übungen

Übung 1: Der Log-Detektiv

  1. Erstelle eine Datei test.log mit vielen Zeilen (einige mit "Error", einige "Info").
  2. Finde alle "Error" Zeilen und speichere sie in errors_only.txt. grep "Error" test.log > errors_only.txt

Übung 2: Die Pipeline

  1. Liste alle Dateien auf (ls -l).
  2. Filtere nur die .txt Dateien (grep).
  3. Zähle, wie viele es sind (wc -l). ls -l | grep ".txt" | wc -l

🦉 Crystal Owl's Weisheit

"Ein einzelnes Werkzeug ist stark. Viele Werkzeuge, verbunden durch Pipes, sind unbesiegbar."


Navigation:
← Zurück: Git Basics | Weiter: Environment →