Lange Zeit dachte ich, dass das Standardverhalten des sort
Programms die ASCII-Reihenfolge verwendet. Wenn ich jedoch die folgenden Zeilen sort
ohne Argumente eingebe:
#
@
Ich habe:
@
#
Laut der ASCII-Tabelle sind #
es jedoch 35 und @
64. Ein weiteres Beispiel ist:
A
a
Und die Ausgabe ist:
a
A
Kann das jemand erklären? Was ist übrigens "Wörterbuchreihenfolge" bei der Verwendung sort -d
?
Antworten:
Anscheinend verwenden Sie ein Nicht-POSIX-Gebietsschema.
Versuchen:
und dann
sort
.info sort
klar sagt:quelle
Um die Sortierreihenfolge zu bestimmen, erstellen Sie einfach eine Datei mit einem anderen Zeichen in jeder Zeile und sortieren Sie sie. Die resultierende Ausgabe teilt Ihnen die Sortierreihenfolge mit.
quelle
Wie
man sort
gesagt, bedeutet "Wörterbuchreihenfolge" "nur Leerzeichen und alphanumerische Zeichen berücksichtigen". Zum Beispiel angesichts der Datender schmucklose
sort
Befehl erzeugt(stellt die Linien , die mit dem Raum und die Zeichen beginnen
!
,#
,$
,%
, und@
Symbolen 1 vor den Linien , die mit Buchstaben und Zahlen beginnen, dh, alphanumerische Zeichen ), abersort -d
erzeugtdogs
ist immer noch der erste, da er mit Leerzeichen beginnt, die Sonderzeichen (Interpunktion) jedoch ignoriert werden.17
kommt vor42
undfox
kommt zwischenbrown
undjumps
, trotz der Tatsache, dass42
undfox
Charaktere vor ihnen haben, die sie normalerweise vor dem bewegen würden17
.____________
1 in der Reihenfolge ihrer ASCII-Werte: Leerzeichen = 040,
!
= 041,#
= 043,$
= 044,%
= 045 und@
= 0100. Beachten Sie, dass dies (ohne Berücksichtigung der Leertaste) bei einigen Tastaturen ungefähr von links nach rechts ist.quelle