Comando tr – Substituir e excluir caracteres em arquivos no Linux

Comando tr – Substituir e excluir caracteres em arquivos no Linux

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.

Sintaxe do comando

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).

Opções

-c, –complement
Usar o complemento do conjunto1 (conjunto inverso)

-d, –delete
Excluir caracteres do conjunto1, sem traduzi-los

-s, –squeeze-repeats
Substituir cada sequência de um caractere repetido listado no conjunto1 com uma única ocorrência do caractere

-t, –truncate-set1
Truncar o conjunto1 no mesmo comprimento do conjunto2

–help
Mostrar a ajuda do comando e sair

–version
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:

\b Backspace
\f Form feed
\n New line
\r Carriage return
\t Tabulação
\v Tabulação vertical

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
alnum Caracteres alfanuméricos
alpha Caracteres alfabéticos
blank Espaços em branco
digit Caracteres numéricos
graph Caracteres gráficos
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.

Exemplos

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.

Até mais!

 

Sobre Fábio dos Reis (1192 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

2 Comentários em Comando tr – Substituir e excluir caracteres em arquivos no Linux

  1. João Carlos // 16/01/2023 em 0:40 // Responder

    Finalmente entendi esse comando, muitíssimo obrigado.

  2. Olá, sou iniciante.

    tenho um arquivo que possui os símbolos a seguir:
    ®
    熊猫家百货商场

    ⭐⭐⭐⭐⭐

    ❤️

    nesse caso teria que usar o [:classe:] ?

Escreva um comentário

Seu e-mail não será divulgado


*