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