テキストファイルが 2 つあります。
$ 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
整理したい
$ 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
なぜ"A"
3位/tmp/test1
そして5位/tmp/test2
?
私の期待は1列につき1文字比較されます。
したがって、列 3 を比較する場合'A'
、、'E'
および'"'
が互いに比較され、これがこのテスト データの最終的な並べ替え順序の最終的な決定要因になります。
明らかに私の期待は間違っていますが、sort
期待通りに動作しない場合はどのように機能するのでしょうか?
sort
希望する並べ替え順序を取得するために使用できるコマンド ライン オプションまたはその他のユーティリティはありますか?
答え1
照合ロケールを変更する必要があります。説明されている動作は、en_US
および他の多くのロケールに共通しています。次のように修正します。
LC_ALL=C sort /tmp/test1
この回答の詳細:https://stackoverflow.com/questions/6531674/linux-sort-unexpected-output
答え2
A
おそらくアルファベット文字だけを見ているのでしょうか? したがって、次のアルファベット文字の場合は、b
from バーになります。