Aufmacher Artikel

Richtige Reihenfolge

Sortiert und zugenäht

01.04.2002 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.

Der Aufruf sort datei sortiert die Zeilen aus der Datei und schickt das Ergebnis nach stdout. Zahlen stehen vor allen anderen Zeichen, Großbuchstaben werden vor Kleinbuchstaben eingeordnet, und deutsche Sonderzeichen wandern ans Ende der Liste. Legen Sie sich zum Testen der wichtigsten Parameter eine einfache Textdatei mit mehreren Zeilen an, z. B. wie in der folgenden Datei:

Petronella,Huhn,lebendig
Easter,Hahn,lebendig
1000,Zahl,tot
Küken,Geflügel,lebendig
ätsch!,bätsch!,tot
1,Zahl,tot
Hubert,Gnom.lebendig
Asteroid,Stein,tot
aua!,weia!,tot

Überprüfen Sie zunächst mit der Option -c, ob die Liste schon sortiert ist:

huhn@asteroid:~$ sort -c datei
sort: datei:2: disorder: Easter,Hahn,lebendig

Die Ausgabe verrät: Bereits in Zeile 2 findet sort ein Wort, das nicht richtig eingeordnet wurde: Easter. Möchten Sie, dass Klein- und Großbuchstaben nicht unterschieden werden, verwenden Sie den Parameter -f.

Um die sortierte Liste statt auf den Bildschirm in eine Datei auszugeben, können Sie entweder sort -o ausgabe datei oder sort datei > ausgabe verwenden. Das >-Zeichen steht dabei für eine Umleitung: Die Ausgabe des oder der Kommandos davor wird statt auf die Standardausgabe in die nach dem >-Zeichen stehende Datei umgelenkt. Vorsicht: Eine bereits vorhandene Datei überschreiben Sie damit. Um die Ausgabe an eine bereits existierende Datei anzuhängen, verwenden Sie stattdessen >> (siehe man bash).

Enthält die Liste Leerzeichen am Zeilenanfang, die Sie beim Sortieren ignorieren möchten, verwenden Sie sort -b. Für eine Liste von Zahlen ist es unter Umständen wichtig, dass statt nach alphabetischem nach numerischem Wert sortiert wird, z. B. "1, 500, 1000" statt "1, 1000, 500". Um die Ziffern richtig einzuordnen, verwenden Sie die Option -g.

Die Option -r bewirkt, dass die Liste rückwärts sortiert wird. Doppelte Listeneinträge können Sie durch sort -u (unique, einmalig) eliminieren.

Listen und Felder

Die Liste aus dem verwendeten Beispiel enthält drei sogenannte Felder, die durch ein Komma getrennt sind. Das Kommando sort kann gezielt nach diesen Feldern sortieren. Dabei sucht es standardmäßig nach Leerzeichen als Trennern zwischen den Einträgen. Mit -t können andere Trennzeichen definiert werden, z. B. sort -t"," datei. Die Zählung der Felder beginnt mit 0 - möchten Sie nach dem zweiten Feld sortieren, verwenden Sie den Parameter +1:

huhn@asteroid:~$ sort -t"," +1 datei
Küken,Geflügel,lebendig
Hubert,Gnom.lebendig
Easter,Hahn,lebendig
[…]

Wie bereits angesprochen verwendet man sort meistens in Kombination mit anderen Befehlen. Als Administrator werden Sie vielleicht herausfinden wollen, welche User den meisten Plattenplatz verbrauchen. Dazu verknüpfen Sie einfach die Befehle du (siehe LinuxUser 04/2001) und sort:

asteroid:~# du -s /home/@L: * | sort -rg
6356156 /home/user1
47304   /home/user2
18864   /home/user3
[…]

Zu Befehl @KL: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.

Glossar

stdout

Es gibt drei "Standardkanäle" für Ein- und Ausgabe, stdin (Standardeingabe), stdout (Standardausgabe) und stderr (Standardfehlerausgabe). Ein Benutzer hat z. B. die Tastatur als Standardeingabe und den Bildschirm als -ausgabe. Sofern das Kommando sort nicht umgeleitet wird, sehen Sie das Ergebnis des Aufrufs sort datei am Bildschirm.

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare