UTF-8을 사용하는 GNU 정렬의 URL 처리 - 이에 대한 문서는 어디에 있습니까?

UTF-8을 사용하는 GNU 정렬의 URL 처리 - 이에 대한 문서는 어디에 있습니까?

이것이 내 마음을 아프게 합니다:

echo -e "http://z.com\nhttps://a.com" | sort

vs.

echo -e "http://z.com\nhttps://a.com" | LC_ALL=C sort

UTF-8로 정렬할 때 정렬은 http와 https를 무시하는 것 같습니다. 하지만 정말 나를 미치게 만드는 것은 이 동작에 대한 문서를 찾을 수 없다는 것입니다. 누군가 나에게 조언을 해줄 수 있습니까?

답변1

C로캘 에서는 문화적 으로 적절한 사전순으로 sortlocale의 원시 바이트에 지정된 순서로 정렬합니다 .en_USsort

  • 로케일 C:

    http://z(58)이 (115)보다 작기 https://a때문에 먼저 정렬하세요 .':''s'

  • 로케일 en_US:

    https://a미국 영어 사전 편찬 순서는 구분 기호를 무시하므로 먼저 정렬되므로 http://z문자열은 httpsa및 에 따라 정렬 되며 httpz분명히 s앞에 옵니다 z.

man 1 sort설명하다:

     ***  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_COLLATE환경 변수를 설정하면 됩니다.

$ echo -e 'ab:d\nabc:d' | LC_COLLATE=en_US.UTF-8 sort
abc:d
ab:d

$ echo -e 'ab:d\nabc:d' | LC_COLLATE=C.UTF-8 sort
ab:d
abc:d

참고: 환경 변수는 자세한 변수 LC_ALL보다 우선합니다 .LC_

관련 정보