Zu Befehl: sort

Gut sortiert

Ordnung ist das halbe Leben, auch auf der Kommandozeile. Mit dem Tool "sort" ordnen Sie Dateilisten und Programmausgaben. Wer will, fügt mit Hilfe dieses kleinen aber feinen Programms sogar mehrere Dateien sortiert zusammen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Der Name ist Programm: Mit dem Kommando sort sortieren Sie zeilenweise. Dabei bearbeitet das Kommando entweder angegebene Dateien oder liest aus der Standardeingabe. Nach welchen Kriterien sortiert wird, bestimmen Sie selbst – sort kennt viele Parameter, die eine gute Feinabstimmung ermöglichen.

Erste Sortierübungen

Eine Datei, die sich prima für Sortierübungen eignet, ist . Werfen Sie einen Blick hinein, sehen Sie, dass die einzelnen Zeilen jeweils bestimmte Felder enthalten, z. B.:

huhn:x:506:100:Heike Jurzik:/home/huhn:/bin/bash

Die einzelnen Felder sind jeweils durch Doppelpunkte voneinander abgetrennt und enthalten den Benutzernamen (huhn), das Passwort (x bedeutet, das Passwort steht in /etc/shadow), die User Identification Number (UID, für "normale" Benutzer eine Zahl ab 100), die Group Identification Number (GID), weitere Informationen (wie Name und Telefonnummer des Benutzers usw.), das Home-Verzeichnis des Benutzers und die Standard-Shell.

Um zu überprüfen, ob die Datei bereits sortiert ist, rufen Sie sort mit dem Parameter -c auf:

$ sort -c /etc/passwd
sort: /etc/passwd:2: ungeordnet: bin:x:1:1:bin:/bin:/bin/bash

Die Ausgabe verrät: Die Datei ist nicht sortiert – schon in der zweiten Zeile befindet sich ein ungeordneter Eintrag. Wollen Sie die Passwortdatei sortieren, lassen Sie sort (zunächst ohne weitere Parameter) darauf los. Wenn Sie die Ausgabe nicht umleiten, landet sie im Terminal. Alternativ verwenden Sie den Operator > und geben einen Dateinamen an:

sort /etc/passwd > passwd_sort

Mit dem Größerzeichen überschreiben Sie die Datei passwd_sort, falls es sie schon gibt. Wollen Sie das verhindern, setzen Sie den Operator >> ein: Er hängt die Ausgabe an das Ende der Datei an.

Die Ausgabe des ersten Sortierversuchs zeigt: sort hat (ausgehend vom ersten Feld, also dem Benutzernamen) die Datei alphabetisch sortiert (Abbildung 1) und listet nun den "Pseudonutzer" at zuerst auf. Um die Reihenfolge umzukehren, setzen Sie die Option -r ein – dann taucht der Eintrag wwwrun am Anfang der Liste auf. Sortieren Sie Dateien, die doppelte Einträge enthalten, unterdrücken Sie die Ausgabe identischer Zeilen mit dem Parameter -u ("unique", einmalig).

Abbildung 1: Mit "sort" erhalten Sie im Handumdrehen eine alphabetisch geordnete Passwortdatei.

Spalten

Sofern nicht anders angegeben, untersucht sort ganze Zeilen und beginnt – wie im ersten Beispiel schön zu sehen – mit dem ersten Buchstaben. Mit ein paar Tricks überreden Sie das Kommando, anhand einer bestimmten Spalte zu sortieren. Standardmäßig sucht sort dabei nach Leerzeichen zwischen den Einträgen und interpretiert diese als Spaltengrenzen. Um dieses Verhalten besser zu verdeutlichen, stellen Sie sich eine fiktive Passwortdatei mit folgendem Aufbau vor:

…
peggy x 502 100 Peggy Gans /home/peggy /bin/bash
huhn x 506 100 Heike Jurzik /home/huhn /bin/bash
petronella x 507 100 Petronella Huhn /home/petronella /bin/bash
…

Um diese Liste jetzt nach der UID (also der dritten Spalte) zu sortieren, verwenden Sie den Parameter -k und geben als weitere Option die Nummer der Spalte an:

$ sort -k 3 /etc/passwd
root x 0 0 root /root /bin/bash
vdr x 100 33 Video Disk Recorder /var/spool/video /bin/false
uucp x 10 14 Unix-to-Unix CoPy system /etc/uucp /bin/bash
…

Leider interpretiert sort die Zahlen einfach als ASCII-Zeichenketten, die es alphabetisch sortiert. Dieses Verhalten führt dazu, dass beispielsweise die Zahl "534" vor "55" eingeordnet wird, weil alphabetisch gesehen "53" kleiner als "55" ist. In diesem Beispiel führt das dazu, dass die UID 100 vor der UID 2 eingeordnet wird. Abhilfe schafft die Option -n, mit der sort Nummern richtig einsortiert:

$ sort -nk 3 /etc/passwd
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /bin/bash
daemon x 2 2 Daemon /sbin /bin/bash
…

Da die echte Passwortdatei keine Leerzeichen, sondern Doppelpunkte als Trenner zwischen den Einträgen enthält, muss es eine Möglichkeit geben, sort das verwendete Trennzeichen mit auf den Weg zu geben. Hier kommt der Parameter -t "trenner" ins Spiel. Geben Sie das Trennzeichen in Hochkommas eingeschlossen an, damit die Bash es nicht selbst interpretiert. Für die echte /etc/passwd verwenden Sie das Kommando:

sort -t ":" -nk 3 /etc/passwd

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Textberge bewältigen
    Genießen Sie einen Crashkurs in den Textbeararbeitungs- und Filterfunktionen der Linux-Shell, der Sie auch die schlimmsten Textberge bewältigen lässt.
  • Beobachtet
    Linux führt Protokoll über alle Aktionen, die auf dem System stattfinden. Dazu gehört auch, wann welche Benutzer aktiv waren und was sie unternommen haben.
  • Sortiert und zugenäht
    Mit dem Kommando sort sortieren Sie Zeilen in Dateien oder aus der Standardeingabe. Als reines Sortierprogramm konzipiert, arbeitet das Tool oft mit anderen Programmen auf der Kommandozeile zusammen.
  • Einführung in die Shell – Teil 3
    In den ersten zwei Teilen der Shell-Einführung [1,2] haben wir Sie mit den Grundlagen der Shell vertraut gemacht. Jetzt stellen wir einige Spezialtools vor, mit denen die Shell besonders leistungsfähig wird – darunter "xargs".
  • Mini-Datenbanken, Teil 1: Quicklist
    Wer in Verbindung mit Linux das Wort "Datenbanken" hört, denkt unwillkürlich an serverbasierte Systeme wie PostgreSQL, MySQL [1] oder Interbase [2]. Es ist unbestritten, dass diese Programme für die Verwaltung tausender Adressen oder für Internetshops ihre Berechtigung haben. Für Diejenigen, die nur ein paar Zeitschriftenartikel oder ihre Kochrezeptsammlung verwalten wollen, sind sie jedoch hoffnungslos überdimensioniert.
Kommentare

Infos zur Publikation

Lu07/2016: GIMP FÜR PROFIS

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Aktuelle Fragen

Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...
lidl internetstick für linux mint
rolf meyer, 04.06.2016 14:17, 3 Antworten
hallo zusammen ich benötige eure hilfe habe einen lidl-internetstick möchte ihn auf linux mint i...
thema ändern
a b, 29.05.2016 16:34, 0 Antworten
Hallo Linuxer zuerst alle eine schönen Sonntag, bevor ich meine Frage stelle. Ich habe Ubuntu 1...
Ideenwettbewerb
G.-P. Möller, 28.05.2016 10:57, 0 Antworten
Liebe User, im Rahmen eines großen Forschungsprojekts am Lehrstuhl für Technologie- und Innova...
Welche Drucker sind Linux-mint kompatibel?
Johannes Nacke, 20.05.2016 07:32, 6 Antworten
Hallo Ihr Lieben, ich bitte um mitteilung welche Drucker Kompatibel sind mit Linux-Mint. LG Joh...