sort
100%

Text-Fu · Lektion 12

sort

Lerne, Textzeilen mit sort lexikalisch, numerisch oder nach ausgewählten Feldern zu ordnen.

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.

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:

  1. Linux sort Befehl: Textsortierung – Sortiere mit sort Textzeilen auf verschiedene Arten, darunter auf- und absteigend.
  2. 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 -r um.

  • Vergleiche Zahlenwerte mit -n.

  • Wähle mit -t und -k einen 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
Nächste Lektion
Zurück zu Text-Fu