gnu coreutils가 고장 났습니까? 다음 입력을 고려하십시오. cat > foo

정렬하려면 다음 입력을 고려하십시오.

cat > foo <<EOM
D,,5014978
DD,,25
D,I,1972765530
D,Y,4223624
-,Y,71285059
YA,I,2
EOM

이제 달려 봐 sort foo

내 리눅스 상자 (gnu coreutils 버전 6.9-7.4)에서 이것을 시도 할 때 출력이 정렬되지 않습니다. cygwin (gnu coretuils 8.5)에서 실행될 때 출력이 정렬됩니다. 코멘트?



답변

정렬은 로캘에 따라 다릅니다. 특히, $LC_COLLATE(에 의해 재정의 될 수 있음 $LC_ALL) 에 따라 $LANG존재하지 않는 경우로 돌아갑니다 . 이 명령 locale은 효과적으로 작업하고있는 값을 보여줍니다. 참조 man 3 strcoll, man 3 setlocale

LC_COLLATE=C(또는 POSIX전혀 로케일이 없으면) 바이트 단위로 엄격한 비교가 이루어집니다.

LC_COLLATE=en_US.utf8 구두점은 무시되고 동일한 동등성 클래스 내의 문자는 동일하게 처리됩니다.


답변