ASCII뿐만 아니라 'tr' az에게도 말해주세요

ASCII뿐만 아니라 'tr' az에게도 말해주세요
tr -sc 'A-Za-z' '\012'

내가 필요한 것이지만 모든 문자가 포함되어 있지는 않습니다. 프랑스어와 같은 언어에서 작동하게 하려면 어떻게 해야 하나요? "az"에 "à", "é" 및 "ç"도 있어야 함을 "tr"에게 어떻게 알릴 수 있나요?

답변1

원칙적으로:

  • LC_CTYPE원하는 문자 집합과 인코딩을 설명하는 변수로 로케일 변수를 설정합니다 LC_CTYPE=fr_FR.UTF-8.
  • [:alpha:]ASCII 이외의 로케일에서는 문자 범위가 잘 정의되지 않고(구현 및 애플리케이션에 따라 다름) 모든 문자를 나타내는 데 사용되며 A-Za-z범위가 코드 포인트를 기반으로 하는 로케일에서도 모든 영숫자 문자가 열거되지는 않습니다 A. 그 다음에 Z는 프랑스어에는 없지만 다른 언어에는 있습니다( Å스웨덴어, 체코어 등).

그러므로,

tr -sc '[:alpha:]' '\012'

그러나 trGNU coreutils의 구현을 포함한 많은 구현은 멀티바이트 인코딩을 지원하지 않습니다. 예를 들어 위 명령은 Latin-1 인코딩에서는 작동하지만 UTF-8에서는 작동하지 않습니다. 대신 sed를 사용할 수 있습니다.

sed 's/[^[:alpha:]][^[:alpha:]]*/_/g'

관련 정보