linux-cli-shell cli text-processing sort uniq cut reporting

Data Processing: sort, uniq & cut (Artikel 256)

Beherrschung der klassischen Linux Text-Tools. Erfahren Sie alles über das Sortieren von Daten, das Finden von Dubletten und die schnelle Extraktion von Spalten.

# Data Processing: Das Trio sort, uniq und cut

TL;DR / Management Summary Während awk (Artikel 255) die Allzweckwaffe ist, sind sort, uniq und cut die Spezialisten für schnelle Datenanalysen. Ein Senior Admin kombiniert diese Tools in Pipes, um aus Millionen von Zeilen innerhalb von Sekunden Berichte zu generieren (z.B. “Die Top 10 IP-Adressen in meinem Web-Log”). Wer diese Tools beherrscht, braucht für einfache Reportings kein Excel mehr.


# 1. Einführung & Architektur

Die spezialisierte Pipeline.

Diese Tools folgen dem Unix-Prinzip: “Do one thing and do it well.”

  • cut: Extrahiert Felder (wie awk, aber schneller/einfacher).
  • sort: Sortiert Zeilen (alphabetisch oder numerisch).
  • uniq: Findet oder zählt identische Zeilen (benötigt sortierte Eingabe!).

# Der Analyse-Flow (Mermaid)

graph LR
    A[Raw Log File] -->|cut| B[Column: IPs]
    B -->|sort| C[Sorted IPs]
    C -->|uniq -c| D[Counted Unique IPs]
    D -->|sort -rn| E[Top List]
    E -->|head| F[Final Result]

# 2. cut: Felder schnell extrahieren

Die Kettensäge für Text.

Wenn Sie nur eine bestimmte Spalte aus einer CSV oder einem Log brauchen:

# Zeige nur die 1. Spalte einer CSV (Trenner: Komma)
cut -d',' -f1 data.csv

# Zeige Zeichen 1 bis 10 jeder Zeile
cut -c1-10 system.log

# 3. sort: Ordnung ins Chaos bringen

Numerisch vs. Alphabetisch.

# Wichtige Flags

  • -n: Numerisch sortieren (10 kommt nach 2).
  • -r: Reverse (Umgekehrt).
  • -k: Key (Bestimmte Spalte sortieren).
  • -h: Human Readable (Sortiert 1K, 1M, 1G korrekt).
# Sortiere Prozesse nach RAM-Verbrauch (Spalte 4)
ps aux | sort -k4 -rn | head

# 4. uniq: Dubletten bändigen

Zählen und Filtern.

Wichtig: uniq erkennt Dubletten nur, wenn sie direkt hintereinander stehen. Nutzen Sie davor immer sort!

# Top 10 IPs ermitteln

cut -d' ' -f1 access.log | sort | uniq -c | sort -rn | head -n 10
  • uniq -c: Zählt die Vorkommen (Count).

# 5. Troubleshooting & “War Stories”

Wenn die Statistik lügt.

# Story 1: “Der 10 vs 2 Fehler”

Symptom: Ein Admin sortiert Dateigrößen und wundert sich, dass eine 100MB Datei vor einer 20MB Datei erscheint. Ursache: Standard-Sortierung ist alphabetisch (1 kommt vor 2). Lösung: Nutzen Sie immer -n (numerisch) oder -h (human-readable).

# Story 2: “Trailing Spaces”

Symptom: uniq zählt identische Zeilen doppelt. Ursache: Manche Zeilen enthalten unsichtbare Leerzeichen am Ende. Lösung: Nutzen Sie sed 's/[[:space:]]*$//' vor dem Sortieren, um Leerzeichen am Ende zu entfernen.


# 6. Fazit & Empfehlung

  • cut: Nutzen Sie cut für einfache Trenner (CSV, /etc/passwd). Bei variablen Leerzeichen (wie in ps) nutzen Sie awk.
  • sort: Nutzen Sie immer -V (Version Sort), wenn Sie Software-Versionen oder Dateinamen mit Nummern sortieren.
  • Wartung: Diese Tools sind extrem stabil und in jeder BusyBox/Alpine Umgebung vorhanden.

# Anhang: Cheatsheet

Aufgabe Befehl
Numerisch sortieren sort -n
Human readable sort sort -h
Eindeutige Zeilen sort -u
Dubletten zählen uniq -c
Nur Dubletten zeigen uniq -d
Spalte 1 und 3 cut -f1,3
Invertiert sortieren sort -r
CSV Spalte 2 cut -d',' -f2