"sort"는 이상한 순서로 출력을 생성합니다.

"sort"는 이상한 순서로 출력을 생성합니다.

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

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

관련 정보