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'

おすすめ記事