テキストファイルが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
?
私の期待はすべての列のすべての文字比較されます。
したがって、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
バーから来ます。