ソートのために、次の入力を考慮してください。
cat > foo <<EOM
D,,5014978
DD,,25
D,I,1972765530
D,Y,4223624
-,Y,71285059
YA,I,2
EOM
今実行してみてくださいsort foo
。
私のLinuxシステム(GNU coreutilsバージョン6.9-8.26)でこれを試しても、出力はソートされません。私はこれを得ます:
$ sort foo
D,,5014978
DD,,25
D,I,1972765530
D,Y,4223624
-,Y,71285059
YA,I,2
明らかに、すべての行はD,
一緒になければならず、-
文字の前に来なければなりません。
Cygwin(GNU coreutils 8.5)で実行すると、出力がソートされます。コメント?
ベストアンサー1
ソートはロケールによって異なります。特にロケールに依存し(再定義できます)、$LC_COLLATE
存在しない場合に$LC_ALL
置き換えられます。$LANG
このコマンドは、locale
効果的に使用されている値を表示します。バラよりman 3 strcoll
、man 3 setlocale
、等。
LC_COLLATE=C
(またはPOSIX
ロケールがまったくありません)厳密なバイト単位の比較が発生します。
LC_COLLATE=en_US.utf8
結果は、句読点を無視し、同じ等価クラスの文字を等しく処理するアルファベット順の等価ソートです。