Em princípio:
- Defina a variável de localidade
LC_CTYPEpara aquela que descreve seu conjunto de caracteres e codificação desejados, por exemplo,LC_CTYPE=fr_FR.UTF-8. - Use
[:alpha:]para representar todas as letras, pois os intervalos de caracteres não são bem definidos em locais que vão além do ASCII (eles dependem da implementação e do aplicativo) eA-Za-znão enumera todas as letras mesmo em localidades onde os intervalos são baseados em números de pontos de código (falta as letras anteriores aAou depois deZ, das quais o francês não possui, mas outras linguagens:Åem sueco, Ž em tcheco,…) .
Assim,
tr -sc '[:alpha:]' '2'
No entanto, muitas implementações de tr , incluindo a do GNU Coreutils, não suportam codificações multibyte. Por exemplo, o comando acima funciona em uma codificação Latin-1, mas não em UTF-8. Você pode usar sed em vez disso.
sed 's/[^[:alpha:]][^[:alpha:]]*/_/g'