Como eu transformo as letras minúsculas acentuadas para maiúsculas? - Usando o comando 'tr' [duplicado]

2

Eu tentei com:

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

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

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

Mas o 'ê' continua em minúsculas.

Alguém poderia me ajudar?

    
por Patterson 29.10.2016 / 02:49

1 resposta

3

Você pode fazer isso com o gawk:

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

(também perl, alguém com certeza vai apontar). O exemplo usa o UTF-8, que não é explicitamente parte do POSIX 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
    
por 29.10.2016 / 02:55