sort
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Hinweis:
Dieser Artikel beschreibt die alte Implementation des Programms. Ab Ubuntu 24.04 ist auch mit Paket rust-coreutils 🇬🇧 eine neue Implementierung in der Programmiersprache Rust für Ubuntu verfügbar, und ab Ubuntu Version 25.10 wird die Implementierung in Rust als Standard bevorzugt.
Die Implementierung in Rust strebt Funktionsgleichheit mit der alten Implementierung an. Es können aber kleine Abweichungen auftreten. Dies bedeutet, dass das hier Beschriebene von der am eigenen Rechner vorgefundenen Situation abweichen kann.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Mit dem Befehl sort lassen sich Dateien zeilenweise sortieren. Zudem ist es möglich, mit Hilfe von sort zu überprüfen, ob Dateien sortiert sind. Der Befehl kann auch dazu dienen, mehrere sortierte oder unsortierte Dateien zu einer sortierten Gesamtdatei zusammenzufügen.
Installation¶
Bis Ubuntu 25.04 ist das Programm im essentiellen Paket coreutils enthalten und deshalb auf jedem System installiert. Diese Variante beruht auf den altbekannten GNU Core Utilities.
Ab 25.10 ist das Paket coreutils 🇬🇧 jedoch ein Metapaket, welches alternativ durch gnu-coreutils 🇬🇧 oder rust-coreutils 🇬🇧 oder weitere befriedigt werden kann.
Bei 25.10 und 26.04 installiert das Paket coreutils-from-uutils 🇬🇧 beide vorstehend genannten Pakete und aktiviert die rust-coreutils als Vorgabe. Siehe Artikel rust-coreutils zur Umstellung auf die GNU-Utilities.
Ab 26.10 soll aber coreutils-from-uutils nur noch die rust-coreutils installieren. Wer dann die alten gnu-coreutils verwenden will, muss coreutils-from-gnu 🇬🇧 manuell installieren.
Aufruf¶
Die allgemeine Syntax lautet [1]:
sort OPTION DATEI
sort kennt folgende Optionen:
Optionen von sort | |
| Option | Beschreibung |
-b oder --ignore-leading-blanks | Ignoriere Leerzeichen am Zeilenanfang |
-c oder --check oder --check=diagnose-first | Überprüfung, ob eine Datei sortiert ist (ohne Sortierung). Ist die Datei nicht sortiert, wird der Wert 1 ausgegeben. |
-C oder --check=quiet oder --check=silent | Wie -c, jedoch wird die erste unsortierte Zeile nicht ausgegeben |
-d oder --dictionary-order | Berücksichtige beim Sortieren nur Leerzeichen und alphanumerische Zeichen |
-f oder --ignore-case | Ignoriere beim Sortieren die Groß- und Kleinschreibung |
-g oder --general-numeric-sort | Anhand des verallgemeinerten numerischen Wertes vergleichen. Siehe auch Option -n. Unterschied |
-h oder --human-numeric-sort | Vergleicht menschenlesbare Zahlen (z. B. 2K 1G) |
--help | Hilfe |
-i oder --ignore-nonprinting | Nur druckbare Zeichen berücksichtigen |
-k oder --key=POS1[,POS2] | Ein Schlüssel geht von POS1 (beginnend mit 1) bis POS2 (Voreinstellung: Zeilenende) |
-m oder --merge | Verbinde bereits sortierte Dateien (ohne anschließende Sortierung) |
-M oder --month-sort | Monatsweise Sortierung ("January" bis "December") |
-n oder --numeric-sort | Sortierung von Zahlen gemäß ihrem numerischen Wert. Siehe auch Option -g. Unterschied |
-o oder --output=FILE | Ausgabe von sort in eine Datei |
-R oder --random-sort | Sortierung in zufälliger Reihenfolge |
-r oder --reverse | Sortierung in umgekehrter Reihenfolge |
-t oder --Feldtrenner=SEP | SEP ist der Trenner anstatt Wechsel von nicht-Leerzeichen zu Leerzeichen (siehe Beispiel mit IP-Nummern am Ende) |
--sort=WORT | Gemäß WORT sortieren: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V |
-u oder --unique | Sortierung ohne doppelte Zeilen |
Weitere Optionen sind der Manpage zu entnehmen.
Beispiele¶
Sortierung nach Größe¶
Im folgenden Beispiel werden die Dateien im Arbeitsverzeichnis nach der Größe sortiert und die Ausgabe in die Datei datei.txt geschrieben. Zunächst werden mit der -s-Option von ls die Dateien mit der Dateigröße vor dem Dateinamen angezeigt, dann wird die so erzeugte Liste mit einer Pipe an den Sort-Befehl übergeben und das Ergebnis in die Datei geschrieben:
ls -s | sort -n >> datei.txt
44K Elmore Leonhard - Easy on the Adverbs.html 120K mcabber_guide.pdf 164K playlist.xspf 432K Richard Rorty - Postmodernist Bourgeois Liberalism.pdf
Sortierung in umgekehrter Reihenfolge¶
Im folgenden Beispiel wird die Datei deutsche_buchstabiertafel_a-e.txt in umgekehrter alphabetischer Reihenfolge sortiert:
sort -r deutsche_buchstabiertafel_a-e.txt
Emil Dora Cäsar Berta Ärger Anton
Positionsweise Sortierung¶
Die Datei datei.txt mit dem Inhalt
Helga 1000 Franz 1000 Friedrich 1000 Otto 1500 Paul 5000 Xaver 2000
soll zunächst (numerisch) nach der zweiten und anschließend der ersten Spalte sortiert werden; das Ergebnis soll in eine Datei datei_neu.txt geschrieben werden. Dazu muss sort mit folgenden Optionen benutzt werden:
sort -k2 -n -k1 datei.txt -o datei_neu.txt
-k2 bezeichnet dabei die zweite Spalte.
Ergebnis:
cat datei_neu.txt
Franz 1000 Friedrich 1000 Helga 1000 Otto 1500 Xaver 2000 Paul 5000
Mit sort -k kann man sehr schön IP-Adressen sortieren (für IPv4):
sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4
Das geht natürlich auch für für IPv6:
sort -d -t : -k 1,1 -k 2,2 -k 3,3 -k 4,4 -k 5,5 -k 6,6 -k 7,7 -k 8,8
Links¶
Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle