tr - Utilitário para substituição de caracteres

Este é um utilitário simples e muito útil, basicamente o tr filtra strings um carácter por vez e se usado corretamente é inclusive compatível com UTF-8.

O filtro dos caracteres é definido pelos parâmetros e para facilitar  você pode usar classes de caracteres, por exemplo, [:upper:] para todas as letras maiúsculas ou [:cntrl:] para todos os caracteres de controle.

Parâmetros

Os parâmetros que mais uso são os seguintes:

  • -d delete para excluir caracteres.
  • -s squeeze que é bem interessante para excluir sequencias de caracteres duplicados.

Exemplos

Converte maiúsculo para minusculo, mas falha com caracteres UTF-8.

echo ÁÉÍÓÚ | tr 'A-Z' 'a-z'

O mesmo que o exemplo anterior, converte de maiúsculas para minusculas, mas dessa vez não falha com caracteres UTF-8.

echo ÁÉÍÓÚ | tr '[:upper:]' '[:lower:]'

Substitui as quebras de linha por espaços em branco.

echo "teste1\nteste2" | tr '\n' ' '

Remove tudo da string deixando apenas os números.  

echo "O numero de telefone é (11) 12345-6789" | tr -cd '[:digit:]'

Remove todos os caracteres de controle deixando apenas o texto puro.

tr -d '[:cntrl:]'

Pega o conteúdo da variável de ambiente PATH e quebra os caminhos um por linha.

echo $PATH | tr  ':' '\n'

Remove os caracteres duplicados.

echo teste        teste  | tr -s ''

Rot13, provavelmente a criptografia mais fraca do universo, mas ainda assim divertido.

tr a-z n-za-m

Portabilidade

tr foi reescrito várias vezes para plataformas diferentes e alguns parâmetros e comportamentos que existem em algumas versões não existem em outras, se você estiver preocupado com a portabilidade dos seus scripts procure usar os parâmetros definidos no POSIX.

Surgimento

Acredito que o primeiro publicação do utilitário tr foi com a versão de 1973 do Unix Time-Sharing System 4

Atores

  • Douglas McIlroy (doug)

Referencias

  • UNIX manpages
  • A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986

Vídeos com exemplos

Cesar Gimenes

Última modificação