28.11
2006

Sortieren von Dateien mit numerischem Inhalt mit SORT

Betrachten wir folgende Datei:

Frank
Meyer Radolfzell 23,18
Peter Rabe Konstanz 17,02
Ottmar Huber Rosenheim
-10,00
Anna Rabe Radolfzell 7,23
Oskar Lindner Konstanz 0,83
Anna List
Freiburg 123,99
Franziska Huber Rosenheim 1,23
Helge Rabe Konstanz
7,45

Die Zahlen in der 4. Spalte (Achtung nach der Zählweise
von sort entspricht dies der 3. Spalte, da sort mit 0 zu zählen beginnt!) können
zum Beispiel Schulden in der Kaffeekasse eines Vereins (z.B. eine Linux User
Gruppe irgendwo am Bodensee :-) ) darstellen. Nun möchte jemand diese Liste nach
den Aussenständen sortiert ausgeben und gibt folgenden Aufruf ein:
sort +3 -4 adressen.txt

Allerdings
erfolgt die Sortorierung nun alphabetisch und nicht wie gewünscht numerisch:

Oskar Lindner Konstanz 0,83
Ottmar
Huber Rosenheim -10,00
Franziska Huber Rosenheim 1,23
Anna List Freiburg
123,99
Peter Rabe Konstanz 17,02
Frank Meyer Radolfzell 23,18
Anna Rabe
Radolfzell 7,23
Helge Rabe Konstanz 7,45

Der Parameter “-g”
(general-numeric-sort) liefert schliesslich das gewünscht Ergebnis:
sort -g +3 -4 adressen.txt

Ottmar Huber Rosenheim -10,00
Oskar Lindner
Konstanz 0,83
Franziska Huber Rosenheim 1,23
Anna Rabe Radolfzell
7,23
Helge Rabe Konstanz 7,45
Peter Rabe Konstanz 17,02
Frank Meyer
Radolfzell 23,18
Anna List Freiburg 123,99

Warnung: Ergebnis abhängig von der Ländereinstellung

Man erhält obige
Resultate nur, wenn eine Ländereinstellung (locale) gewählt ist, die für
Dezimalzahlen Kommas und nicht Punkte verwendet.

Es muss also z.B.
folgende Einstellung (beispielsweise in .bashrc) vorgenommen worden sein:

export LANG=de_DE
Um sicher zu gehen, die richtigen, also die numerisch
sortierten Ergebnisse zu erhalten, kann man auch sort mit folgender Option
aufrufen:

LC_NUMERIC=C sort +3 -4
adressen.txt

Obiger Aufruf funktioniert innerhalb jeder
Ländereinstellung.

powered by performancing firefox

Drucken PDF

Switch to our mobile site