sort, uniq und cut sind das Standard-Trio der Shell, um Textdateien zu ordnen, Duplikate zu entfernen und Spalten herauszuschneiden. Zusammen ersetzen sie viele kleine Tabellenkalkulations-Schritte direkt im Terminal.

sort: Zeilen ordnen

sort namen.txt                # alphabetisch sortieren
sort -n zahlen.txt            # numerisch sortieren
sort -r namen.txt             # absteigend
sort -k2 mitarbeiter.txt      # nach 2. Spalte sortieren
sort -h groessen.txt          # Größen wie 1K, 2M, 3G korrekt ordnen

uniq: Duplikate entfernen und zählen

sort namen.txt | uniq         # Duplikate entfernen (Eingabe muss sortiert sein)
sort namen.txt | uniq -c      # mit Anzahl je Eintrag
sort namen.txt | uniq -d      # nur Zeilen, die mehrfach vorkommen
sort namen.txt | uniq -u      # nur Zeilen, die genau einmal vorkommen

cut: Spalten ausschneiden

cut -d: -f1 /etc/passwd       # Feld 1, getrennt durch ':'
cut -d, -f2,3 export.csv      # Felder 2 und 3 aus einer CSV
cut -c1-10 datei.txt          # die ersten 10 Zeichen je Zeile
ps aux | tr -s ' ' | cut -d' ' -f2   # PID-Spalte

Typische Kombination

cut -d' ' -f1 zugriffe.log | sort | uniq -c | sort -rn   # häufigste Einträge
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -20

Praxis-Tipps

  • uniq vergleicht nur benachbarte Zeilen — ohne sort davor werden nicht alle Duplikate entfernt.
  • sort -t: setzt ein eigenes Trennzeichen für -k-Sortierungen, z. B. sort -t: -k3 -n /etc/passwd.
  • cut kann keine variablen Trennzeichen wie mehrere Leerzeichen — vorher mit tr -s ' ' bündeln.
  • Für Log-Analysen ist die Kette sort | uniq -c | sort -rn der Klassiker, um Ranglisten zu bauen.

Verwandte Grundlagen: awk-Befehle, Bash-Befehle und grep-Befehle.