Ich habe 2 Textdateien:
$ cat /tmp/test1
"AAP" bar
"AEM" bar
"AA" bar
"AEO" bar
"A" bar
$ cat /tmp/test2
"AEM" foo
"AAP" foo
"A" foo
"AEO" foo
"AA" foo
Ich möchte sie sortieren
$ sort /tmp/test1
"AA" bar
"AAP" bar
"A" bar <-- "A" is in position 3
"AEM" bar
"AEO" bar
$ sort /tmp/test2
"AA" foo
"AAP" foo
"AEM" foo
"AEO" foo
"A" foo <-- "A" is in position 5
Warum "A"
endet inPosition 3 in/tmp/test1
und inPosition 5 in/tmp/test2
?
Meine Erwartung ist, dassjedes Zeichen pro Spaltewerden verglichen.
Beim Vergleich von Spalte 3 werden daher 'A'
und miteinander verglichen, und dies ist der entscheidende Faktor für die endgültige Sortierreihenfolge dieser Testdaten.'E'
'"'
Offensichtlich habe ich falsch erwartet. Wie soll es also sort
funktionieren, wenn nicht wie erwartet?
Gibt es eine Befehlszeilenoption sort
oder ein anderes Dienstprogramm, mit dem ich die gewünschte Sortierreihenfolge erhalten kann?
Antwort1
Sie müssen das Sortierungsgebietsschema ändern. Das von Ihnen beschriebene Verhalten ist typisch für en_US
viele andere Gebietsschemas. Beheben Sie es mit:
LC_ALL=C sort /tmp/test1
Mehr in dieser Antwort:https://stackoverflow.com/questions/6531674/linux-sort-unexpected-output
Antwort2
Möglicherweise werden nur alphabetische Zeichen berücksichtigt? Daher A
ist in diesem Fall das nächste alphabetische Zeichen der b
Von-Strich.