Tutorial: Arbeiten mit dem sort Befehl
Dieses Tutorial gibt dir einen umfassenden Überblick über den Linux/Unix-Befehl sort. Mit sort kannst du Textzeilen in Dateien oder aus der Standardausgabe alphabetisch oder numerisch sortieren.
1. Die Grundlagen
Die Standardfunktion von sort ist das alphabetische Sortieren von Zeilen in einer Textdatei.
Syntax:
sort [Optionen] [Datei]
Beispiel:
Angenommen, du hast eine Datei namen.txt:
Berta
Anton
Dora
Caesar
Befehl: sort namen.txt
Ausgabe:
Anton
Berta
Caesar
Dora
2. Wichtige Optionen
A. Umgekehrt sortieren (-r)
Mit -r (reverse) kehrst du die Sortierreihenfolge um.
sort -r namen.txt
B. Numerisch sortieren (-n)
Standardmäßig sortiert sort alphabetisch. Das bedeutet, dass "10" vor "2" kommt (da "1" vor "2" steht). Um Zahlen korrekt nach ihrem Wert zu sortieren, nutzt man -n.
sort -n zahlen.txt
C. Duplikate entfernen (-u)
Die Option -u (unique) gibt jede identische Zeile nur einmal aus.
sort -u namen.txt
D. Groß-/Kleinschreibung ignorieren (-f)
Normalerweise haben Großbuchstaben Vorrang. Mit -f (fold) wird dieser Unterschied ignoriert.
sort -f namen.txt
3. Fortgeschrittene Sortierung (Spalten & Trennzeichen)
Oft hast du Tabellen (z.B. CSV-Dateien) und möchtest nach einer bestimmten Spalte sortieren.
Nach Spalte sortieren (-k)
Mit -k (key) gibst du die Spaltennummer an.
Beispiel Datei liste.txt:
1 Obst Apfel
3 Gemüse Karotte
2 Obst Banane
Sortierung nach der 3. Spalte (alphabetisch):
sort -k 3 liste.txt
Trennzeichen definieren (-t)
Wenn deine Spalten nicht durch Leerzeichen, sondern z.B. durch ein Komma oder Semikolon getrennt sind, nutzt du -t.
Beispiel CSV: Name,Alter,Stadt
sort -t ',' -k 2 -n daten.csv
(Hier wird nach der 2. Spalte – Alter – numerisch sortiert, wobei das Komma als Trenner dient).
4. In eine Datei speichern
sort gibt das Ergebnis standardmäßig nur im Terminal aus. Um es zu speichern, gibt es zwei Wege:
- Mit Umleitung (
>):sort namen.txt > sortiert.txt - Mit der Option
-o(output): (Vorteil: Hier kann die Ausgabedatei dieselbe wie die Eingabedatei sein)sort -o namen.txt namen.txt
5. Praktische Kombinationen (Piping)
sort wird oft zusammen mit anderen Befehlen verwendet.
Beispiel: Die größten Dateien in einem Verzeichnis finden
du -h | sort -h
(du -h listet Dateigrößen auf, sort -h sortiert "human readable" Werte wie 1K, 2M, 1G korrekt).
Beispiel: Eindeutige Zeilen zählen Wie viele unterschiedliche Namen sind in der Liste?
sort namen.txt | uniq -c
Zusammenfassung / Cheat Sheet
| Befehl | Beschreibung |
|---|---|
sort file |
Alphabetisch sortieren |
sort -r |
Reihenfolge umkehren (Z-A) |
sort -n |
Numerisch sortieren (1, 2, 10...) |
sort -u |
Duplikate entfernen |
sort -k 2 |
Nach der zweiten Spalte sortieren |
sort -t ':' |
Doppelpunkt als Trennzeichen festlegen |
sort -M |
Nach Monaten sortieren (JAN, FEB...) |
sort -R |
Zufällige Sortierung (Shuffle) |
Übung für dich:
Erstelle eine Datei test.txt mit folgendem Inhalt:
10;Zebra
2;Affe
1;Vogel
Versuche nun, die Datei numerisch nach der ersten Spalte zu sortieren, wobei das Semikolon das Trennzeichen ist.
Lösung:
sort -t ';' -k 1 -n test.txt