**ソート** がすべてのマシンで同じようにソートされないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/28881

  •  09-06-2019
  •  | 
  •  

質問

同じものを使用する 選別 同じ入力のコマンドは、異なるマシンでは異なる結果を生成します。それを修正するにはどうすればよいですか?

役に立ちましたか?

解決

マンページ OS X では次のように言われます。

******* 警告 ******* 環境によって指定されたロケールは、ソート順序に影響します。LC_ALL = Cを設定して、ネイティブバイト値を使用する従来のソート順序を取得します。

それは物事を説明するかもしれません。

一部のシステムがロケールをサポートしていない場合は、デフォルトでそのロケール (C) が使用されるため、それらのロケールを設定する必要はありません。ロケールをサポートするものがあり、同じ動作が必要な場合は、次のように設定します。 LC_ALL=C それらのシステム上で。それは、私が知っている限り多くのシステムに同じ方法を実行させる方法です。

ロケールのないシステムがない場合は、ロケールを共有することを確認するだけでおそらく十分でしょう。

正規の情報の詳細については、「The Single UNIX ® 仕様、バージョン 2」の説明を参照してください。 ロケール, 環境変数, setlocale() そしてその説明は、 ソート(1) ユーティリティ。

他のヒント

これはロケールの違いの結果である可能性があります。

$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_

LC_ALL 環境変数を同じ値に設定すると、問題が解決されるはずです。

これはおそらく、 ロケール環境変数. sort これらの設定を使用して文字列を比較する方法を決定します。呼び出す前にこれらの環境変数を希望どおりに設定することで、 sort, 、特定の方法で動作するように強制できるはずです。

あなたがこれまで知りたかった以上のことについて sort, 、 読む の仕様 sort の中に 単一 Unix 仕様 v3. 。それは述べています

比較 [...] は、現在のロケールの照合順序を使用して実行されます。

ああ、どうやって sort ソートは、スクリプトが実行されている環境のロケール (言語) 設定に依存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top