C언어

LC_ALL=C

고요한하늘... 2013. 11. 13. 13:20

\\\\    1

\\    2

\    3

\\\\\\   4

\\\\\\\   5



위처럼 생긴 파일을 리눅스 sort를 사용해서 정렬을 하면

\\\\\\\ 5

\\\\\\  4

\\\\    1

\\      2

\       3

처럼 정렬이 된다.
내가 기대한것은
\       3

\\      2

\\\\    1

\\\\\\  4

\\\\\\\ 5    이다.

그러면 -r 옵션으로 역순으로 정렬하면 될까?

물론 이 경우에는 그렇게 하면 되겠지만

\\\네이버       7

\\\다음 6


위처럼 두라인이 추가되면 의도했던 것과는 다른 결과가 나온다

\\\\\\\ 5

\\\\\\  4

\\\\    1

\\\네이버       7

\\\다음 6

\\      2

\       3


위 결과를 reverse sort를 해도 결과의 역순일뿐...


그러면 이런 경우 LC_ALL=C를 설정하고 하면 다음과 같이 정렬된다.
\       3
\\      2
\\\\    1
\\\\\\  4
\\\\\\\ 5
\\\네이버       7
\\\다음 6

기대했던 결과이다.
그러면 LC_ALL이란 무엇인가

아래 URL을 참고


요약하면 언어가 다양한 만큼 각 언어에 맞는 환경을 설정할수 있는데

LANG=ko_KR.eucKR
LC_CTYPE="ko_KR.eucKR"
LC_NUMERIC="ko_KR.eucKR"
LC_TIME="ko_KR.eucKR"
LC_COLLATE="ko_KR.eucKR"
LC_MONETARY="ko_KR.eucKR"
LC_MESSAGES="ko_KR.eucKR"
LC_ALL= 
것들이 있다.
일일이 설정하기 어려우므로 LC_ALL로 한번에 동일하게 설정할수 있다.

glibc 기본 locale( POSIX ) 로 설정하고자 할때 LC_ALL=C 로 설정을 한다.

'C언어' 카테고리의 다른 글

C언어 고급기능  (0) 2014.02.20
GNU LIB 관련 링크  (0) 2014.01.28
숫자에 3자리마다 콤마 찍기  (0) 2013.09.13
프로그래밍 관련 사이트  (0) 2013.09.10
로컬 프로그램 멀티 쓰레드  (0) 2013.08.08