접힌 케이스를 정렬하려는 이유는 무엇이며 대소문자 구분 옵션은 무엇입니까?

접힌 케이스를 정렬하려는 이유는 무엇이며 대소문자 구분 옵션은 무엇입니까?

목록 문자열을 대소문자를 구분하여 정렬하려고 하는데 목록이 대소문자를 구분하지 않는 순서로 표시됩니다. 정렬을 위한 Man 또는 --help info는 -f 또는 --ignore-case 옵션을 제공하지만 기본 순서로 보이는 것을 무시하는 둔감 정렬에 대한 옵션은 나열되지 않습니다. 정렬을 위해 정의된 별칭이 없는지 확인했습니다.

정렬 기본 작업이 내가 선택할 수 있는 옵션인 이유는 무엇이며 해당 기본값을 재정의하는 문서화된 옵션이 없는 이유는 무엇입니까?

추가 검사를 통해 구두점을 무시하는 것처럼 보이기 때문에 사전식 정렬을 수행하는 것처럼 보입니다. 어쨌든 기본적으로 정상적으로 작동하도록 하거나 적어도 CLI 재정의를 제공하여 정상적으로 작동하도록 하고 싶습니다.

sort --version 정렬(GNU coreutils) 8.4

센토스 6인 것 같아요.

답변1

이는 로케일에 따라 다릅니다(Debian/GNU 시스템의 경우).

$ printf '%s\n' B A b a | LC_COLLATE=en_US.UTF-8 sort 
a
A
b
B
$ printf '%s\n' B A b a | LC_COLLATE=C sort 
A
B
a
b

GNU 정렬 매뉴얼 페이지에는 다음이 언급되어 있습니다.

* 경고하다 *환경에 의해 지정된 로캘은 정렬 순서에 영향을 미칩니다. LC_ALL=C기본 바이트 값을 사용하여 기존 정렬 순서를 가져오도록 설정합니다 .

LC_COLLATE정렬에 영향을 미치는 옵션 LC_ALL이지만 다른 모든 LC_*옵션을 무시하는 과잉 스위치입니다.

적어도 에서는 원래 순서에 관계없이 맨 앞으로 정렬 en_US.UTF-8되므로 대소문자를 구분하지 않는 정렬입니다 .aA

locale명령은 유효한 로케일 설정을 표시해야 합니다.

관련 정보