
postgres에서 정렬하기 위한 솔루션을 찾고 있지만 데이터 정렬 문제가 더 많은 것 같아서 대신 표준 Unix 정렬 명령에 대해 질문합니다.
나는 다음과 같은 데이터를 가지고 있습니다 :
A_A1
A\A2
A_A2
A\A1
정렬 후 나는 다음을 얻습니다.
cat test.txt |sort
A_A1
A\A1
A_A2
A\A2
하지만 나는 원한다:
A_A1
A_A2
A\A1
A\A2
나도 시도했지만 LANG=C cat...
소용이 없었습니다. 그렇다면 특수 문자를 무시하지 않는 대조 규칙은 무엇입니까?
답변1
에서 man sort
:
Set LC_ALL=C to get the traditional sort order that uses native byte values.
그래서:
$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2
따라서 C 로캘은 바이트 값을 기준으로 정렬됩니다.
당신은해야합니다
$ cat test.txt | LC_ALL=C sort
그렇게 파이프하려는 경우(그러나 사용 가능한 경우 항상 파일 이름 버전을 직접 사용하십시오).
이에 영향을 미치는 기본 환경 변수는 입니다 LC_COLLATE
. LC_ALL
하지만 설정하면 모든 특정 값보다 우선 합니다 LC_
. 또는 LC_ALL
둘 다 설정되지 않은 경우에는 LC_COLLATE
로 대체됩니다 LANG
. 만약에저것설정되지 않은 경우 기본값은 locale 입니다 C
.