Exemplos de uso do comando tr no Linux

Tempo de leitura: 6 minutos

No artigo de hoje vamos ver alguns exemplos de uso do comando tr no linux, lembrando que o comando tr é um dos cobrados na prova LPI-101 (117-101) e por isso vale a pena entender bem seu funcionamento.

De acordo com o manual do comando tr (man tr) ele é utilizado para traduzir, comprimir e/ou deletar caracteres da entrada padrão (stdin) escrevendo o resultado na saída padrão (stdout). Ou seja, o comando tr no linux é  utilizado para substituição de um valor por outro, basicamente especificamos o valor a procurar e o valor a substituir. Como o comando tr não trabalha com arquivos é necessário usar um pipe ou redirecionamento para que ele receba os valores. Abaixo a sintaxe básica do comando tr:

tr [OPTION]… SET1 [SET2]

Até aí tudo bem, mas vamos então ver alguns exemplos simples de como podemos utilizar o comando tr na prática.

Substituindo letras minúsculas por maiúsculas

Uma das primeiras formas de utilização que a maioria dos alunos aprendem é a substituição simples, por exemplo, para substituir letras minúsculas por maiúsculas. Veja abaixo algumas formas de se fazer isso com o comando tr no linux.

$ tr [:lower:] [:upper:] < alunos.txt > novo.txt

perceba que o comando acima está informando ao comando tr para substituir todos os caracteres minúsculos ([:lower:]) por maiúsculos ([:upper:]) do arquivo alunos.txt (< alunos.txt) e colocar o resultado dessa substituição no arquivo novo.txt (>novo.txt)

Ou ainda poderíamos utilizar na forma.

$ tr a-z A-Z < alunos.txt > novo.txt

Substituições Simples

Claro que com o comando tr também podemos fazer substituições simples, por exemplo, imagine que você tem um arquivo de uma base de dados qualquer e você precisa trocar todos os caracteres ! (exclamação) por * (asterisco)…não me perguntem por que, é só um exemplo (heheh). Você poderia utilizar o comando tr no linux na seguinte forma:

$ tr ! * < basedados.sql > novabase.sql

Trocar espaços por tab

Outra forma muito útil é poder trocar espaços em branco por tabs, por exemplo, você tem uma lista de itens separado por espaços em branco mas sua aplicação necessita que os itens sejam separados por tab. Veja como fazer isso com o comando tr de uma forma bem simples.

$ tr [:space:] ‘\t’ < minhalista > novalista

Eliminando caracteres repetidos

Esse eu já utilizei na prática, vária vezes…Imagine a seguinte situação, em um determinado website tem um formulário de cadastro de usuários para um determinado serviço ou seja lá o que for, onde os usuários irão preencher o nome em um formulário e isso será salvo em um banco de dados. Não sei por que alguns usuários gostam de pressionar a barra de espaço mais de uma vez entre o nome e o sobrenome, tipo João    da   Silva ao invés de simplesmente João da Silva. E por algum motivo você deseja eliminar esses espaços em branco a mais que foram cadastrados.

Para aqueles que não conhecem linux podem tentar da forma mais trabalhosa, por exemplo, em um editor de texto substituir 10 espaços por 1 espaço, depois 9 espaços por 1 espaço e assim vai…hahaha…felizmente o linux nos ajuda e muito nessas tarefas. Veja como é fácil fazer isso com o comando tr e sua opção -s (- -squeeze-repeats).

$ tr -s [:space:] ‘ ‘ < cadastro.sql > novocadastro.sql

perceba que utilizamos a opção -s e falamos para substituir espaços por um espaço simples (‘ ‘). Ou seja, dois segundos de trabalho.

Deletando caracteres

Outra exemplo de utilização do comando tr no linux seria para deletarmos algum caractere e para isso utilizamos a opção -d. Vamos mais uma vez imaginar um exemplo, você tem uma tabela no seu banco de dados com o CEP dos seus clientes. Todos os CEPs foram cadastrados no formato xx.xxx-xxx e agora você deseja manter o registro dos CEPs no formato xxxxxxxx, ou seja, sem o ponto (.) e sem o hifem (-). Veja como é fácil fazer isso com o comando tr.

$ tr -d ‘.-‘ < cep.sql

 Transformando linhas em colunas

Agora vamos a um último exemplo, onde juntaremos algumas das opções que vimos aqui para realizar uma tarefa bem comum também. Vamos imaginar que você tenha um arquivo com uma lista de itens, com um item por linha, no formato abaixo.

$ cat item.txt
verde
amarelo
azul
branco

E agora você precisa criar um arquivo com esses itens em uma única linha, com a vírgula como separador. Veja abaixo uma das formas de executarmos essa tarefa com o comando tr no linux.

$ tr -s ‘\n’ ‘ ‘ < item.txt | tr [:blank:] ‘,’ > novalista.txt

Perceba que primeiro substituimos a quebra de linha (\n) por um espaço simples (‘ ‘) no arquivo item.txt. Depois, com o pipe redirecionamos o resultado para o comando seguinte, onde substituimos os espaços em branco horizontais ([:blank:]) por uma vírgula e por fim jogamos o resultado de tudo isso no arquivo novalista.txt.

Bem pessoal, por hora é isso aí. Como vocês viram o comando tr no linux pode facilitar nossa vida quando precisamos fazer algum tipo de substituição ou edição simples. Tarefas que muitas vezes poderiam ser demoradas, podem ser facilmente executadas em poucos segundos. Claro que existem diversas outras formas, algumas até mais poderosas, como por exemplo com o comando sed. Mas isso é assunto para um outro artigo… 😉

Por isso que eu sempre comento que aprender linux não é só para administradores de redes linux. O conhecimento básico de alguns recursos do linux pode facilitar a vida de qualquer um que utiliza a informática, seja você um estudante, webmaster que hospeda seus sites em servidores linux, ou um simples usuário doméstico. Com certeza, seja qual for o seu perfil, você vai conseguir encontrar recursos fantásticos no linux para otimizar seu dia a dia.

DLTEC ACESSO PREMIUM

Acesse o curso “Linux Essentials” em nossa área premium.

Aprenda como dar seus primeiros passos no Linux e a dominar a linha de comandos (CLI).

Clique aqui para ativar o curso Linux Essentials!

Não é membro premium? Clique aqui e saiba mais sobre a DlteC Premium.

Sobre Alexei C Tavares

Graduado em Engenharia Eletrônica/Telecomunicações pela UTFPR, é Co-Fundador da DlteC do Brasil e trabalha com Telecomunicações e Redes desde 1997. É autor de livros, tais como Roteadores e Switches - Guia para Certificação CCNA e CCENT - 2a. Edição.

Fique em contato através das redes sociais - Facebook, Google+.

  • JRM

    Obrigado pelas dicas esclarecedoras!

  • Pingback: ()

  • Marco Aurelio Barros Fortes

    Assim como o exemplo de transformar linhas em colunas como faço ao contrário, isto é, linhas em colunas?

  • Sylar

    Muito bom, obrigado!

    • http://www.dltec.com.br DlteC do Brasil

      De nada!