Ich dachte, das sort
würde gemeinsame Präfixe zusammen sortieren, aber das passiert nicht immer. Nehmen Sie diese Eingabe zum Beispiel:
AT0S*eightieths
AT0S*eyetooth's
AT*ad
AT*Ad
AT*AD
AT*Eydie
AT*eyed
ATF*adv
ATF*ATV
ATF*edify
ATF*Ediva
ATFKT*advocate
ATFKTNK*advocating
ATFKT*outfought
ATFKTS*advocates
ATHT*whitehead
ATHT*Whitehead
AT*id
AT*I'd
AT*Ito
AT*IUD
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
AT*oat
AT*OD
AT*outweigh
AT*owed
ATP0K*idiopathic
ATP*adobe
ATT*wighted
ATT*witted
ATT*wooded
AT*UT
AT*Uta
AT*wowed
AT*Wyatt
ATX*atishoo
Danach sort
würde ich erwarten, dass alles AT*
in einem Block endet, aber wenn Sie diese Daten durchlaufen sort
, wird die Ausgabe ==
eingegeben. Warum das? Ich gebe keine Option an, um nicht-alphabetische Zeichen oder irgendetwas zu ignorieren. Nur sort dict > out
.
Meine Version von sort
kommt von coreutils 8.5-1ubuntu3
.
Antworten:
Dadurch bleibt die natürliche Reihenfolge der Zahlen erhalten.
quelle
Durch Festlegen von LC_ALL = C wurde die herkömmliche Sortierreihenfolge in meinem Fall wiederhergestellt. Paket: coreutils Version: 8.5-1ubuntu3
quelle
LANG=C
funktioniert auch. Was mich verwirrt:LANG
ist eingestellt aufen_US.UTF-8
; warum wird*
noch was besonderes behandelt ???LC_COLLATE
ist die Einstellung, die spezifisch fürsort
usw. ist.export
lokale und möglicherweise mit etwas anderem zu verwirren. Einfach einstellen in dem Aufruf von sort:LC_ALL=C sort
.echo -e 'a\n*\n*b\nc' | LC_ALL=C sort
Zum Beispiel wird LC_ALL nicht außerhalb des Aufrufs zum Sortieren geändertEs funktioniert wie erwartet für mich (auf Cygwin).
sort input > output
Ergebnisse inIst die Sortierung auf etwas ausgerichtet? Versuchen
\sort
Ebenfalls
quelle
Version: sort (GNU coreutils) 8.26
Ich mache es inline:
Oder nach Funktion (ändert die Originaldatei):
quelle
So geben Sie eine einfache Antwort, die auf den Kommentaren anderer basiert und Ihre Umgebung nicht verändert:
oder
oder Kombinationen davon.
quelle
Mit GNU sort können Sie Folgendes verwenden
--dictionary-order
:quelle