アクセント付きの小文字を大文字に変換するにはどうすればいいですか? - 'tr' コマンドの使用

アクセント付きの小文字を大文字に変換するにはどうすればいいですか? - 'tr' コマンドの使用

私は次のことに悩んでいます:

$ echo 'Ciência' | tr 'a-z' 'A-Z'
CIêNCIA

しかし、「ê」文字は変化しません。明らかにアクセントが付いているためです。次に、POSIX クラスを試しました。

echo "Ciência" | tr '[:lower:]' '[:upper:]'
CIêNCIA

しかし、「ê」は小文字のままです。

誰か助けてくれませんか?

答え1

gawk でこれを行うことができます:

echo "Ciência" | gawk '{print toupper($0);}'

(Perlもそうだと誰かが指摘するだろう)。この例ではUTF-8を使用しているが、これは明示的にPOSIX awkgawk のドキュメントにはこれらの問題が記載されています。たとえば、mawk と bwk (one-true-awk) はどちらも異なる結果を返します。

+ echo Ciência
+ gawk {print toupper($0);}
CIÊNCIA
+ echo Ciência
+ mawk {print toupper($0);}
CIêNCIA
+ echo Ciência
+ one-true-awk {print toupper($0);}
CIêNCIA

関連情報