정렬을 위해 다음 입력을 고려하십시오.
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
결과는 구두점을 무시하고 동일한 동등 클래스의 문자를 동일하게 처리하는 알파벳순 동등 정렬입니다.