Das sort
Dienstprogramm in Ubuntu 10.04 (Lucid) sortiert immer nach Groß- und Kleinschreibung, genau wie wenn Sie es angeben --ignore-case
.
The two sort just give the same result:
echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case
Aber manchmal möchte ich nach Groß- und Kleinschreibung sortieren, sodass zuerst die Groß- und dann die Kleinschreibung erfolgt. Ist es möglich?
echo $'B\nÄ\nb\na' | LC_COLLATE=C sort
. Sollte nicht die Tatsache, dass GNUsort
mit einem Nicht-C
Gebietsschema immer eine case-IN-sensitive Sortierung durchführt, als Fehler angesehen werden ?C.UTF-8
locale (LC_COLLATE=C.UTF-8
) zwischen Groß- und Kleinschreibung unterschieden, während Nicht-ASCII-UTF-8-Zeichen "normal" behandelt werden. Leider ist es nicht in glibc verfügbar und wird nur von Debian, Ubuntu und Derivaten gepatcht.Interessanterweise gibt es noch eine andere Sortierreihenfolge:
Dies setzt den Großbuchstaben vor den entsprechenden Kleinbuchstaben.
Hier ist ein Vergleich ihrer Ausgaben (ich habe "d" und "D" hinzugefügt) im
en_US.UTF-8
Gebietsschema (außer wo überschrieben):echo -e "d\nD\nc\nb\nB\na" | sort
echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case
Ausgabe:
quelle
sort
v5.93
(kommt mit OS X 10.9.3 (!)) Undv8.13
, aber NICHT inv8.21
undv8.22
. Ich denke, die Ergebnisse von 2. und 4. können immer noch als gleichwertig angesehen werden (aber das würde sich offensichtlich mit der Hinzufügung von Fremdzeichen ändern).