Comando tr - Substituir e excluir caracteres em arquivos no Linux - Bóson Treinamentos em Ciência e Tecnologia
Início » Linux » Comando tr – Substituir e excluir caracteres em arquivos no Linux
Postado Em 27/03/2019 [data do post] por Fábio dos Reis [autor do post] em Linux [categoria do post]
O comando tr é um comando básico no Linux/Unix, porém apesar disso não é muito conhecido ou utilizado com frequência.
Sua função principal é substituir (traduzir) o conteúdo de uma string (texto) recebido via entrada padrão (STDIN) de um formato para outro, ou ainda excluir caracteres.
O comando tr funciona usando dois conjuntos de conteúdo fornecidos pelo usuário. O primeiro conjunto pode ser considerado como o conjunto de caracteres original (atual) e o segundo contém os caracteres que irão ser usados na substituição/exclusão. Por exemplo, podemos trocar todas as ocorrências de um caracter em especial por outro usando o comando tr.
tr [opções] conjunto1 [conjunto2]
O comando receberá dados da entrada padrão, localizará os caracteres pertencentes ao conjunto1 e os substituirá pelos caracteres pertencentes ao conjunto2.
Onde os conjuntos são arquivos ou outras fontes de texto, que serão passadas como argumento ao comando tr via STDIN (entrada padrão).
-c, –complement
Usar o complemento do conjunto1 (conjunto inverso)
Excluir caracteres do conjunto1, sem traduzi-los
Substituir cada sequência de um caractere repetido listado no conjunto1 com uma única ocorrência do caractere
Truncar o conjunto1 no mesmo comprimento do conjunto2
Mostrar informações de versão e sair.
Como especificar os conjuntos de caracteres
Podemos representar os conjuntos de caracteres a serem tratados pelo comando tr usando as seguintes "classes" de caracteres:
a-a Faixa de caracteres. Representa uma faixa de caracteres entre os caracteres apresentados, incluindo-os e em ordem ascendente, como definido pela sequência de colação do sistema
[:classe:] Representa todos os caracteres que pertençam à classe apresentada. Classes comuns são:
Classe Significado
blank Espaços em branco
digit Caracteres numéricos
lower Caracteres minúsculos
print Caracteres imprimíveis
punct Caracteres de pontuação
special Caracteres especiais
upper Caracteres em maiúsculas
xdigit Caracteres hexadecimais
Qualquer outro caractere que não foi descrito na tabela representará a si próprio.
1. Substituir todas as ocorrências do caracter w por v no arquivo teste1, gerando o arquivo de saída teste2:
$ tr 'w' 'v' < teste1 > teste2
2. Colocar todos os caracteres de um arquivo chamado propaganda.txt em maiúsculas:
$ tr 'a-z' 'A-Z' < propaganda.txt > propaganda-M.txt
3. Vamos excluir todas as ocorrências do caractere # do arquivo teste.conf, gerando um novo arquivo teste2.conf. Isso equivale a descomentar todas as linhas de um arquivo de texto. Usaremos a opção -d para isso:
$ tr -d '#' < teste.conf > teste2.conf
4. Vamos arrumar um arquivo que contém um erro comum: caracteres repetidos em sequência. Por exemplo, vamos transformar todas as ocorrências da string ff no caracter único f no arquivo teste1, produzindo o arquivo teste2. Usaremos a opção -s do comando (squeeze):
$ tr -s 'ff' < teste1 > teste2
5. Excluir todos os caracteres de um arquivo chamado memorando, exceto letras maiúsculas. Usaremos a opção -d combinada com -c, que é o complemento – significa que excluiremos tudo EXCETO o conjunto de caracteres que será fornecido – no caso, A-Z:
$ tr -dc 'A-Z' < memorando > memorando2
Existem diversos outros comandos que podem ser usados para tratar arquivos dessa forma, tais como sed, awk, cut, que serão abordados em outros artigos.