同じ入力を持つ同じのソートコマンドを使用すると、異なるマシンで異なる結果が生成されます。どうすれば修正できますか?**すべてのマシンで同じものを並べ替えるのはなぜですか?
答えて
OS X上のman-pageは言う:
******* WARNINGが環境で指定されたロケールがソート順に影響を与え*******。 LC_ALL = Cに設定すると、元のバイト値を使用する従来の並べ替え順が になります。
これは説明する可能性があります。
システムの中には、ロケールサポートがないものがある場合は、そのロケール(C)にデフォルト設定されているため、それらに設定する必要はありません。ロケールをサポートするものがあり、同じ動作が必要なものがある場合は、それらのシステムにLC_ALL=C
を設定します。それは私が知っている限り多くのシステムを同じようにする方法です。
ロケールレスのシステムをお持ちでない場合は、ロケールを共有するだけで十分でしょう。
より多くの標準的な情報については、locale、environment variables、setlocale()ザシングルUNIX®仕様、バージョン2の説明とsort(1)ユーティリティの説明を参照してください。
これは、ロケールの違いの結果であり得る:同じ値にLC_ALL環境変数を設定する
$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_
$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_
は、問題を修正する必要があります。
これはおそらくlocale environment variablesの設定が異なるためです。 sort
はこれらの設定を使用して文字列を比較する方法を決定します。 sort
を呼び出す前にこれらの環境変数を設定することで、特定の方法で動作させることができます。
sort
についてもっと知りたい場合は、Single Unix Specification v3のspecification of sort
をお読みください。それは状態
現在のロケールの照合順序を使用して実行されるものとします。
IOW、どのようにsort
の並べ替えは、スクリプトが実行されている環境のロケール(言語)設定によって異なります。
- 1. 並べ替えで並べ替え
- 2. 同じものを吊り上げて並べ替えていますか?
- 3. アルファベットで同じ値のキーを並べ替える
- 4. Riakでデータを並べ替え/並べ替える方法は?
- 5. Spark DataFrame group降順で並べ替えて並べ替え
- 6. UITableView並べ替えのような並べ替え
- 7. C++で別のベクトルと並べ替えてベクトルを並べ替える
- 8. ASPxPivotGridカスタム並べ替え/並べ替えを削除する
- 9. Visual Studioで常に.designerファイルを並べ替えるのはなぜですか?
- 10. Laravel 4.2並べ替えの関係による並べ替え
- 11. VBA - ドラッグ&ドロップによる並べ替えの並べ替え
- 12. androidどのように私は同じボタンのクリックイベントで項目のリストを並べ替え、並べ替えをすることができます
- 13. Eclipseエクステンションポイントのエクステンションの並べ替え/並べ替え
- 14. 並べ替えメソッドを持つ人物の並べ替え
- 15. カスタムオーダーで並べ替える
- 16. AlphaFunで並べ替える
- 17. 数字のスクリプト、3行で簡単に並べ替えると、最後のliが正しく並べ替えられないのはなぜですか?
- 18. 配列なしで並べ替える
- 19. Riak並べ替えでMapReduce
- 20. 距離で並べ替え
- 21. フィールドでデータ並べ替え
- 22. インデックスで並べ替え
- 23. DataGridViewプログラムで並べ替え
- 24. サブクエリ内で並べ替え
- 25. カスタムフィールドで並べ替え
- 26. TableSorter。ドロップダウンリストで並べ替え
- 27. すべてのレベルの式を並べ替える
- 28. Chromeで並べ替えられていないリストのリスト項目を並べ替える
- 29. 他の配列と同じ順序で配列を並べ替える
- 30. 別の配列と同じ順序で配列を並べ替える
ロケールをLC_ALL = Cに設定するにはどうすればよいですか? – Malcolm
@Malcolm:多くの推奨事項ではLC_ALL変数をエクスポートするよう指示されていますが、これはユーザーのシェル設定を破壊します。私の答え[ここ](http://stackoverflow.com/questions/6923464/unix-sort-ignores-whitespaces/17180962#17180962)を参照して、セットスコープに設定してください – mateor