UTF8로 리눅스 정렬

UTF8로 리눅스 정렬

정렬된 파일( 포함 LANG = fr_FR.UTF-8)에는 다음이 포함됩니다.

Bassano del Grappa - Remondini, Giuseppe, II (1745-1811)
Bassano del Grappa - Remondini, Giuseppe, I (1672-1742)
...
Zurich - Wolf, Johannes (1564-1627)
Zurich - Wolf, Johann Rudolf, I (15..-1624)

악센트에는 문제가 없습니다. 그런데 왜 II이전인가 이전 I인가 ?JohannesJohann

(이는 Red Hat Enterprise Linux Server 버전 6.6(San Diego)에 있습니다.)

답변1

POSIX가 아닌 로케일을 사용하는 경우 GNU sortLinux에서 예상되는 출력이 발생하지 않습니다. GNU를 사용하더라도 Solaris에서는 이런 일이 발생하지 않습니다 sort. Stéphane Chazelas의 심층 설명 보기여기.

가장 좋은 방법은 POSIX최소한 일관된 출력을 제공하는 로케일로 전환하는 것입니다.

예를 들어:

$ cat f
w
e
é
f
 z
  x

리눅스:

$ LC_ALL=C sort f
  x
 z
e
f
w
é
$ LC_ALL=fr_FR.utf8 sort s
e
é
f
w
  x
 z

솔라리스:

LC_ALL=C sort s 
  x
 z
e
f
w
é
$ LC_ALL=fr_FR.UTF-8 sort s
  x
 z
e
é
f
w

답변2

정렬하기 전에 모든 공백을 패턴 000으로 대체하여 문제를 해결했습니다(공간 문제일까요!!?). 모두에게 감사드립니다. 특히 "문자열에서 배열 시퀀스 생성"에 대한 링크를 제공한 Stéphane에게 감사드립니다.

관련 정보