Se você aceitar perl
, essa solução será copiada diretamente de Perl, usando a função tr para converter maiúsculas para minúsculas e vice-versa -versa ao mesmo tempo? funcionará para você:
echo 'Hello Élève. It is beautiful!' |
perl -Mopen=locale -Mutf8 -pe 's/([[:upper:]])|([[:lower:]])/defined $1 ? lc $1 : uc $2/eg'
hELLO éLÈVE. iT IS BEAUTIFUL!
Eu também queria saber como usar algo como ( gsed ... || tr ... )
para que sistemas com gsed
do GNU tivessem prioridade, mas em outros sistemas onde tr
era provavelmente não o GNU que seria executado em vez disso . (% GNU POSIX tr
aparentemente lida com caracteres multi-byte corretamente.)