2012-08-13 2 views
0

을 사용하여 알파벳 순서에 따라 파일의 줄을 정렬하지만 약간 이상한 결과가 나타납니다. 문자를 10 진수 코드로 정렬한다고 생각했지만 보이지 않습니다. 즉 'E'(decode 69)는 'e'(decode 101) 다음에 오며, '0'(code 48)은 ':'(code 58) 뒤에옵니다.
나는 그것이 나에게 정답을 제공합니다 있는지 확인하는sort 명령의 일치하지 않는 대답

if [[ "E" < "e" ]]; then echo "true"; else echo "false"; fi 

if [[ "0" < ":" ]]; then echo "true"; else echo "false"; fi 

을 사용하려고하지만, 그렇지 않습니다. 나는 우분투 12.04에서 일하고 있는데 내 환경의 인코딩과 내가 정렬하려고하는 파일은 en_us.UTF-8로 정의되어있다.

문제는 내가 줄을 사전 순으로 정렬한다고 가정하고 자바 프로그램에서 파일을 구문 분석해야한다는 것입니다. 그래서 java는 문자열의 10 진수 코드에 따라 문자열을 비교하지만 파일의 행이 동일한 순서에 따라 정렬되지 않기 때문에 구문 분석에 실패합니다.

사람은 어느 순서에 따라 파일을 정렬하는 또 다른 방법을 사용하여 나를 중 하나 진수 코드를 사용하는 종류의을 강제로이 문제를 해결하는 데 도움이 수 없습니다.

도움을 주셔서 감사합니다.

답변

2

경고의 경고.

*** WARNING *** The locale specified by the environment affects sort 
    order. Set LC_ALL=C to get the traditional sort order that uses native 
    byte values. 

이 시도 :

$ LC_ALL=C sort input.txt 
0 
: 
E 
e 

이 ($는 쉘 프롬프트이다)