Ich kenne keine Ländereinstellungen, die standardmäßig in dieser Reihenfolge sortiert sind. Die Lösung besteht darin, ein benutzerdefiniertes Gebietsschema mit einer benutzerdefinierten Sortierreihenfolge zu erstellen. Wenn jemand vier Jahre später auf eine benutzerdefinierte Weise sortieren möchte, ist hier der Trick.
Die überwiegende Mehrheit der Gebietsschemas gibt keine eigene Sortierreihenfolge an, sondern kopiert die in definierte Sortierreihenfolge, /usr/share/i18n/locales/iso14651_t1_common
sodass Sie diese bearbeiten möchten. Anstatt die Sortierreihenfolge für fast jedes Gebietsschema durch Ändern des Originals zu ändern iso14651_t1_common
, sollten Sie eine Kopie erstellen. Details zur Funktionsweise der Sortierreihenfolge und zum Erstellen eines benutzerdefinierten Gebietsschemas in Ihrem $HOME
Verzeichnis ohne Root-Zugriff finden Sie in dieser Antwort auf eine ähnliche Frage .
Werfen Sie einen Blick darauf, wie a
und A
werden basierend auf ihren Einträgen in bestellt iso14651_t1_common
:
<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
<U0041> <a>;<BAS>;<CAP>;IGNORE # 517 A
b
und B
sind ähnlich:
<U0062> <b>;<BAS>;<MIN>;IGNORE # 233 b
<U0042> <b>;<BAS>;<CAP>;IGNORE # 550 B
Wir sehen, dass beim ersten Durchgang beide a
und A
das Sortiersymbol haben <a>
, während beide b
und B
das Sortiersymbol haben <b>
. Da <a>
erscheint vor <b>
in iso14651_t1_common
, a
und A
sind vor b
und gebunden B
. Der zweite Durchgang unterbricht die Verbindungen nicht, da alle vier Zeichen das Sortiersymbol <BAS>
haben. Während des dritten Durchgangs werden die Verbindungen jedoch aufgelöst, da das Sortiersymbol für Kleinbuchstaben <MIN>
in Zeile 3467 vor dem Sortiersymbol für Großbuchstaben <CAP>
(Zeile 3488) angezeigt wird. . So ist die Sortierreihenfolge so endet a
, A
, b
, B
.
Das Vertauschen des ersten und dritten Sortiersymbols sortiert die Buchstaben zuerst nach Groß- und Kleinschreibung (unterer als oberer Buchstabe), dann nach Akzent ( <BAS>
bedeutet nicht akzentuiert) und dann nach alphabetischer Reihenfolge. Befinden sich jedoch beide <MIN>
und <CAP>
vor den numerischen Ziffern, so würde dies den unerwünschten Effekt haben, Ziffern nach Buchstaben zu setzen.
Die einfachste Möglichkeit, die ersten Ziffern zu behalten, während alle Kleinbuchstaben vor allen Großbuchstaben kommen, besteht darin, alle Buchstaben beim ersten Vergleich zum Binden zu zwingen, indem Sie alle auf gleich setzen <a>
. Um sicherzustellen, dass sie innerhalb der Groß- und Kleinschreibung alphabetisch sortiert sind, ändern Sie das letzte Sortiersymbol von IGNORE
in das aktuelle erste Sortiersymbol. Nach diesem Muster a
würde werden:
<U0061> <a>;<BAS>;<MIN>;<a> # 198 a
A
würde werden:
<U0041> <a>;<BAS>;<CAP>;<a> # 517 A
b
würde werden:
<U0062> <a>;<BAS>;<MIN>;<b> # 233 b
B
würde werden:
<U0042> <a>;<BAS>;<CAP>;<b> # 550 B
und so weiter für den Rest der Briefe.
iso14651_t1_common
Befolgen Sie nach dem Erstellen einer benutzerdefinierten Version von die Anweisungen in der oben verlinkten Antwort , um Ihr benutzerdefiniertes Gebietsschema zu kompilieren.
sort
, aber mit dem Semikolon ist die Variable lokal für die Shell und hat keinen Einfluss auf das Verhalten vonsort
. Das Semikolon könnte so bleiben, wie es ist, wenn die Variable ebenfalls exportiert wird, dies würde jedoch auch andere Befehle betreffen.