Como faço para transformar letras minúsculas acentuadas em maiúsculas? - Usando o comando 'tr'

Como faço para transformar letras minúsculas acentuadas em maiúsculas? - Usando o comando 'tr'

Eu tentei com:

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

Mas o caractere 'ê' não muda, obviamente porque está acentuado. Então tentei com classes POSIX:

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

Mas o 'ê' continua em letras minúsculas.

Alguém poderia me ajudar?

Responder1

Você pode fazer isso com gawk:

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

(também perl, alguém certamente apontará). O exemplo usa UTF-8, que não faz parte explicitamente doPOSIX awk. a documentação do gawk menciona esses problemas. Por exemplo, tanto mawk quanto bwk (one-true-awk) fornecem resultados diferentes:

+ 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

informação relacionada