ユーティリティ「sort」はどのように機能しますか? (なぜ期待通りに機能しないのですか?)

ユーティリティ「sort」はどのように機能しますか? (なぜ期待通りに機能しないのですか?)

テキストファイルが 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おそらくアルファベット文字だけを見ているのでしょうか? したがって、次のアルファベット文字の場合は、bfrom バーになります。

関連情報