한글이 섞여 있는 파일을 sort로 정렬할때 결과의 순서가 이상할때가 있다.
이런경우 LC_COLLATE 환경변수를 바꿔서 한글순서 정렬이 가능하다.

(LC_ALLLC_*계열 환경변수를 모두 바꾸므로 LC_ALL에 설정해도 무방)

한글 UTF-8 기준으로 정렬하려면 LC_COLLATE="ko_KR.utf8"로 설정하면 된다.

# centos 7.2, GNU coreutils 8.22

$ cat text
바d
가l
자e
사m
다n
하g
나j
파h
타c
카f
아i
차b
마k
라a

$ sort text
라a
차b
타c
바d
자e
카f
하g
파h
아i
나j
마k
가l
사m
다n

$ C_COLLATE="ko_KR.UTF-8" sort text
가l
나j
다n
라a
마k
바d
사m
아i
자e
차b
카f
타c
파h
하g

$ LC_COLLATE="C" sort text
가l
나j
다n
라a
마k
바d
사m
아i
자e
차b
카f
타c
파h
하g

LC_COLLATEC, POSIX로 설정하면 strcmp 기준으로 정렬을 하는데
한글만 포함된경우 문제가 없으나 영문 대소문자도 아스키코드 기준으로 정렬하니 주의해야 한다.

$ cat en
a
C
D
b
A
d

$ sort en # LC_COLLATE="en_US.UTF-8"
a
A
b
C
d
D

$ LC_COLLATE='posix' sort en
A
C
D
a
b
d

추가로 macOS 에서는 위 LC_COLLCATE=ko_KR.UTF-8 적용이 안되고 C, POSIX로도 안되는데…
비정상 locale 값을 적어서 strcmp 기준으로 정렬은 가능하다.