Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Traduzir, suprimir e deletar caracteres

Sobre

O comando tr traduz automaticamente (substitui ou mapeia) um conjunto de caracteres para outro.

Descrição

O utilitário tr copia a entrada padrão para a saída padrão com substituição ou exclusão de caracteres selecionados.


Para mais informações consulte o manual: tr(1)


Uso

tr [OPTION] ... SET1 [SET2]

Exemplos

1. Convertendo todos os caracteres minúsculos para maiúsculo.
$ echo 'shell script x' | tr '[a-z]' '[A-Z]'
SHELL SCRIPT X
O uso do range '[a-z]' significa um intervalo contendo todos os caracteres minúsculos de 'a' à 'z''

2. Substituindo todas as ocorrências da letra 'a' por 'A' na expressão.
$ echo 'Comprei uma pilha aaa recarregável.' | tr 'a' 'A'
Comprei umA pilhA AAA recArregável.
A substituição é recursiva, ou seja, a operação é realizada em todos os caracteres casados em SET1. Note que a letra 'á' (com acento) não foi substituída; Pois a comparação é bit a bit, havendo uma diferenciação entre caracteres com pontuação.

3. Repetindo o exemplo acima tratando o caractere acentuado.
$ echo 'Comprei uma pilha aaa recarregável.' | tr 'aá' 'AÁ'
Comprei umA pilhA AAA recArregÁvel.
Desta vez a letra 'á' (acentuada) foi substituída por seu equivalente 'Á' em SET2. Substitui-se o caractere na posição N em SET1 pelo caractere na posição equivalente em SET2. Caso o comprimento da expressão em SET1 for superior a SET2, é considerado toda a sequência em SET1 para substituição.

4. Substituir intervalo por um único caractere.
$ echo 'meu número é confidencial 8888-3321' | tr '[0-9]' 'X'
meu número é confidencial XXXX-XXXX
Foi definido um intervalo onde todos os números entre '0' à '9' deverão ser substituídos pela letra 'X', mascarando assim nosso número de telefone hipotético.

5. Excluindo todas as vogais.
$ echo 'acho que vou ficar compreensivel.' | tr -d '[aeiou]'
ch q v fcr cmprnsvl.
Como esperado todas as vogais foram removidas da expressão e consequentemente deixando-a compreensível. Lembre-se, ao definir uma lista o 'tr' lê cada caractere individualmente e não como uma expressão única.

6. Fazendo um swapcase (trocando formatação)
$ echo 'mEU NOME É jULIANO sANTOS.' | tr '[a-z][A-Z]' '[A-Z][a-z]'
Meu nome É Juliano Santos.
Todos os caracteres contidos no primeiro intervalo (minúsculo) em SET1 são convertidos para o primeiro intervalo equivalente (maiúsculo) em SET2; E o mesmo procedimento é realizado no segundo intervalo em ambos SET'n. Todos os caracteres em minúsculo são convertidos para maiúsculo e vice-versa.

7. Suprimindo caracteres repetidos.
$ echo 'Ganhei da mega senaaaaa!!!!!' | tr -s '!a'
Ganhei da mega sena!
Todos os caracteres repetidos foram suprimidos, reduzindo-os à apenas um caractere. Atenção, o procedimento é realizado somente em caracteres repetidos consecutivos.

8. Traduzindo todos os caracteres exceto o da lista.
$ echo 'SHELL X SCRIPT' | tr -c 'X' '*'
******X********
Observe que todos os caracteres com exceção do 'X' foram traduzidos para o caractere '*'. A quantidade de caracteres após a letra 'X' (espaço inclusive) é igual a 7 caracteres, porém se contarmos o total de '*' (asterisco) obteremos como resultado 8; Pois até mesmo o caractere '\n' (nova linha) foi traduzido.

9. Removendo todos os caracteres exceto os da lista.
$ echo 'O PID do processo é 3219.' | tr -cd '0-9\n'
3219
Neste exemplo, utilizando o parâmetro '-c' para criar uma lista negada contendo um range com os números de '0' à '9' e mais o caractere '\n' (nova linha), mudando assim o comportamento do comando 'tr' que passa a excluir todos os caracteres exceto aqueles mencionados na expressão.

Comentários

Contato

Nome

E-mail *

Mensagem *