Zum Inhalt springen

Filter-Befehle

cat gibt den Inhalt einer oder mehrerer Dateien nach stdout aus. Ohne Argument liest es von stdin:

Terminal-Fenster
cat datei.txt # Datei ausgeben
cat datei1.txt datei2.txt # mehrere Dateien hintereinander
cat datei1.txt datei2.txt > zusammen.txt # zusammenführen

Als Filter in einer Pipeline:

Terminal-Fenster
cat /etc/passwd | grep root
Terminal-Fenster
head datei.txt # erste 10 Zeilen (Standard)
head -n 20 datei.txt # erste 20 Zeilen
head -n -5 datei.txt # alles außer den letzten 5 Zeilen
tail datei.txt # letzte 10 Zeilen (Standard)
tail -n 20 datei.txt # letzte 20 Zeilen
tail -n +5 datei.txt # ab Zeile 5 bis zum Ende

tail -f folgt einer wachsenden Datei in Echtzeit – unverzichtbar für Log-Monitoring:

Terminal-Fenster
tail -f /var/log/syslog
tail -f /var/log/nginx/access.log

wc (Word Count) zählt Zeilen, Wörter und Zeichen:

Terminal-Fenster
wc datei.txt
# 42 318 2104 datei.txt
# ^ ^ ^
# | | Bytes
# | Wörter
# Zeilen

Einzelne Werte:

Terminal-Fenster
wc -l datei.txt # nur Zeilen
wc -w datei.txt # nur Wörter
wc -c datei.txt # nur Bytes
ls /etc | wc -l # Anzahl Einträge in /etc

less zeigt langen Output seitenweise an – nützlich wenn eine Ausgabe nicht auf den Bildschirm passt:

Terminal-Fenster
less datei.txt
ls -la /etc | less
cat /var/log/syslog | less

Navigation wie in man: Space/b, /suche, q zum Beenden.


Terminal-Fenster
sort datei.txt # alphabetisch aufsteigend
sort -r datei.txt # absteigend
sort -n zahlen.txt # numerisch (nicht lexikografisch)
sort -h größen.txt # menschenlesbare Größen (1K, 2M, ...)
sort -u datei.txt # sortieren und Duplikate entfernen
sort -t: -k3 -n /etc/passwd # Feld 3, :-getrennt, numerisch sortieren
Terminal-Fenster
ls -1 /etc | sort -r | head -5 # letzte 5 Einträge alphabetisch

uniq entfernt aufeinanderfolgende identische Zeilen. Fast immer in Kombination mit sort:

Terminal-Fenster
sort datei.txt | uniq # sortieren, dann Duplikate entfernen
sort datei.txt | uniq -c # mit Häufigkeit voranstellen
sort datei.txt | uniq -d # nur Duplikate anzeigen
sort datei.txt | uniq -u # nur Unikate anzeigen (kein Duplikat)

Typischer Einsatzfall – häufigste Einträge in einem Log:

Terminal-Fenster
cat access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head -10
# → Top-10 IP-Adressen nach Anzahl der Zugriffe

grep gibt nur die Zeilen aus, die ein bestimmtes Muster enthalten – und ist damit der klassische Zeilenfilter in Pipelines:

Terminal-Fenster
grep "ERROR" /var/log/syslog # Zeilen mit "ERROR" ausgeben
grep -v "^#" /etc/ssh/sshd_config # Kommentarzeilen ausblenden
cat access.log | grep "404" | wc -l # Anzahl 404-Fehler zählen

grep ist als Suchwerkeug so mächtig, dass es einen eigenen Artikel im Abschnitt Suchen bekommt.


cut extrahiert Spalten aus strukturiertem Text:

Terminal-Fenster
# -d Trennzeichen, -f Feldnummer(n)
cut -d: -f1 /etc/passwd # Benutzernamen (Feld 1, getrennt durch :)
cut -d: -f1,3 /etc/passwd # Benutzername und UID
cut -d, -f2-4 daten.csv # Felder 2 bis 4 einer CSV
# -c Zeichenpositionen
cut -c1-10 datei.txt # erste 10 Zeichen jeder Zeile
Terminal-Fenster
cat /etc/passwd | cut -d: -f1 | sort
# → alle Benutzernamen alphabetisch

tr (Translate) ersetzt oder löscht einzelne Zeichen. Es liest nur von stdin:

Terminal-Fenster
echo "hallo welt" | tr 'a-z' 'A-Z' # → HALLO WELT
echo "hallo welt" | tr ' ' '_' # → hallo_welt
echo "hallo welt" | tr -s ' ' # mehrfache Leerzeichen zusammenführen (-s squeeze)
echo "hallo123" | tr -d '0-9' # Ziffern löschen (-d delete) → hallo
cat datei.txt | tr -d '\r' # Windows-Zeilenenden entfernen
Terminal-Fenster
tr 'a-z' 'A-Z' # Kleinbuchstaben → Großbuchstaben
tr 'A-Z' 'a-z' # Großbuchstaben → Kleinbuchstaben
tr '0-9' 'a-j' # Ziffern → Buchstaben