Der Befehl sort liest vollständige Zeilen, ordnet sie nach gewählten Vergleichsregeln und schreibt das Ergebnis nach stdout. Eine Eingabedatei wird nur verändert, wenn du ausdrücklich eine Ausgabeoperation dafür wählst.
Text-Fu · Lektion 12
sort
Lerne, Textzeilen mit sort lexikalisch, numerisch oder nach ausgewählten Feldern zu ordnen.
Vollständige Zeilen sortieren
Betrachte animals.txt:
dog
cow
cat
elephant
bird
Sortiere die Zeilen aufsteigend:
$ sort animals.txt
bird
cat
cow
dog
elephant
Die Textreihenfolge richtet sich nach der aktuellen Locale, was Großschreibung, Akzente und Satzzeichen beeinflussen kann. Verwende eine einheitliche Locale wie LC_ALL=C, wenn ein Skript eine reproduzierbare byteorientierte Kollation benötigt:
$ LC_ALL=C sort animals.txt
Was bewirkt sort animals.txt ohne Schlüssel- oder Zahlenoption?
Das Ergebnis umkehren
Mit -r kehrst du das Vergleichsergebnis um:
$ sort -r animals.txt
elephant
dog
cow
cat
bird
Welcher Befehl sortiert animals.txt in umgekehrter Reihenfolge?
Zahlen vergleichen
Eine lexikalische Reihenfolge vergleicht Zeichen, weshalb 10 normalerweise vor 2 steht. Verwende -n für einen gewöhnlichen numerischen Vergleich:
$ printf '10\n2\n30\n' | sort -n
2
10
30
Kombiniere Optionen bei Bedarf. sort -nr scores.txt vergleicht numerisch und setzt größere Werte zuerst.
Welcher Befehl sortiert numerische Zeilen in scores.txt vom größten zum kleinsten Wert?
Nach einem Feld sortieren
Mit -k START[,END] wählst du einen Schlüssel. Standardmäßig werden Felder durch Folgen von Leerraum getrennt. Für durch Doppelpunkte getrennte Datensätze verwendest du -t ':':
$ printf 'alice:30\nbob:8\ncarol:20\n' | sort -t ':' -k 2,2n
bob:8
carol:20
alice:30
Hier legt -t ':' das Trennzeichen fest, -k 2,2 begrenzt den Schlüssel auf Feld 2 und das angehängte n vergleicht diesen Schlüssel numerisch. Ohne das abschließende ,2 reicht ein bei Feld 2 beginnender Schlüssel normalerweise bis zum Zeilenende.
Welcher Befehl sortiert users.txt numerisch und ausschließlich nach dem zweiten durch Doppelpunkte getrennten Feld?
Duplikate entfernen und Ausgabe speichern
Mit -u gibst du für jeden gleichen Vergleichsschlüssel nur eine Zeile aus:
$ sort -u names.txt
Damit wird gleichzeitig sortiert und nach den gewählten Vergleichsregeln dedupliziert. Möchtest du nur benachbarte Duplikate aus bereits sortierten Daten entfernen, eignet sich der später behandelte Befehl uniq.
Soll das Ergebnis in eine andere Datei geschrieben werden, genügt eine gewöhnliche Umleitung:
$ sort names.txt > names-sorted.txt
Führe nicht sort names.txt > names.txt aus; die Shell leert die Eingabe, bevor sort sie liest. GNU sort -o names.txt names.txt verwaltet die eigene Ausgabe sicher, wenn du bewusst denselben Pfad verwenden möchtest:
$ sort -o names.txt names.txt
Bewahre eine Sicherung auf oder schreibe und prüfe zunächst ein separates Ergebnis, wenn die Originaldaten wichtig sind.
Welcher Befehl weist sort unter GNU/Linux an, das sortierte Ergebnis sicher nach names.txt zurückzuschreiben, ohne dass eine Shell-Umleitung die Datei zuvor leert?
Mit diesen Übungen kannst du zeilenorientierte Daten praktisch ordnen und analysieren:
- Linux sort Befehl: Textsortierung – Sortiere mit
sortTextzeilen auf verschiedene Arten, darunter auf- und absteigend. - Wortzählung und Sortierung – Kombiniere Sortierung und Wortzählung, um Textdaten zu analysieren und häufige Muster zu finden.
Lektion abgeschlossen
Sie haben sort abgeschlossen
Du kannst nun Vergleichsregeln und Ziele für sortierten Text auswählen.
Sortiere vollständige Zeilen unter einer ausdrücklichen Locale, wenn Reproduzierbarkeit wichtig ist.
Kehre Ergebnisse mit
-rum.Vergleiche Zahlenwerte mit
-n.Wähle mit
-tund-keinen begrenzten Feldschlüssel.Entferne Duplikate oder speichere Ausgaben, ohne die Eingabe zu leeren.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen