Comando tr do Linux: Tradução de Caracteres

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, vamos explorar o comando tr no Linux, um utilitário versátil para transformar texto no nível de caractere. O comando tr, abreviação de "translate" (traduzir), é amplamente utilizado para tarefas como conversão de maiúsculas e minúsculas, remoção de caracteres específicos e limpeza básica de dados. Ao final deste laboratório, você estará proficiente no uso do tr para diversos cenários de manipulação de texto. Este laboratório foi projetado para iniciantes, então não se preocupe se você for novo nos comandos Linux - guiaremos você por cada etapa cuidadosamente.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 98%. Ele recebeu uma taxa de avaliação positiva de 99% dos alunos.

Entendendo o Básico do tr

Vamos começar entendendo a sintaxe básica do comando tr:

tr [OPTION]... SET1 [SET2]

O comando tr lê o texto da entrada padrão (stdin), transforma-o de acordo com as opções e conjuntos de caracteres especificados e grava o resultado na saída padrão (stdout).

Vamos começar com um exemplo simples. Criaremos um arquivo chamado greeting.txt com uma mensagem de saudação básica e usaremos o tr para converter todas as letras minúsculas em maiúsculas.

Primeiro, crie o arquivo:

echo "hello, world" > ~/project/greeting.txt

Dicas: Você pode copiar e colar os comandos de criação de arquivo no terminal para criar os arquivos corretamente.

Este comando cria um novo arquivo chamado greeting.txt no seu diretório de projeto (~/project/) com o conteúdo "hello, world".

Agora, vamos usar o tr para converter todas as letras minúsculas em maiúsculas:

cat ~/project/greeting.txt | tr 'a-z' 'A-Z'

Você deverá ver a seguinte saída:

HELLO, WORLD

Vamos detalhar este comando:

  1. cat ~/project/greeting.txt: Lê o conteúdo do arquivo.
  2. |: Este é o símbolo de pipe (tubulação). Ele pega a saída do comando à sua esquerda e a alimenta como entrada para o comando à sua direita.
  3. tr 'a-z' 'A-Z': Este é o nosso comando tr. Ele traduz cada caractere no primeiro conjunto ('a-z', que representa todas as letras minúsculas) para o caractere correspondente no segundo conjunto ('A-Z', que representa todas as letras maiúsculas).

Note que este comando não modifica o arquivo original. Se você quiser salvar o texto transformado, precisará redirecionar a saída para um novo arquivo.

Excluindo Caracteres com tr

O comando tr também pode excluir caracteres específicos da entrada. Isso é particularmente útil quando você precisa limpar um texto removendo caracteres indesejados. Vamos criar um arquivo com algumas pontuações e depois removê-las.

Primeiro, crie um arquivo com pontuação:

echo "Hello, World! How are you?" > ~/project/punctuated.txt

Dicas: Você pode copiar e colar os comandos de criação de arquivo no terminal para criar os arquivos corretamente.

Agora, vamos usar o tr para remover toda a pontuação:

cat ~/project/punctuated.txt | tr -d '[:punct:]'

Você deverá ver:

Hello World How are you

Vamos detalhar este comando:

  1. cat ~/project/punctuated.txt: Lê o conteúdo do arquivo.
  2. |: Envia a saída para o comando tr.
  3. tr -d '[:punct:]':
    • A opção -d diz ao tr para excluir (delete) os caracteres especificados.
    • [:punct:] é uma classe de caracteres que representa todos os caracteres de pontuação. Classes de caracteres são conjuntos predefinidos que facilitam a especificação de grupos de caracteres.

Este comando remove todos os caracteres de pontuação do texto, deixando apenas letras, números e espaços.

Traduzindo Múltiplos Caracteres

Agora vamos explorar uma tradução mais complexa. Criaremos um arquivo com um texto codificado e usaremos o tr para decodificá-lo. Este exemplo demonstra como o tr pode ser usado para criptografia e descriptografia simples.

Primeiro, crie um arquivo com texto codificado:

echo "Tijt jt b tfdsfu nfttbhf." > ~/project/encoded.txt

Dicas: Você pode copiar e colar os comandos de criação de arquivo no terminal para criar os arquivos corretamente.

Agora, vamos decodificá-lo:

cat ~/project/encoded.txt | tr 'b-za-a' 'a-z'

Você deverá ver:

This is a secret message.

Vamos detalhar este comando:

  1. cat ~/project/encoded.txt: Lê o conteúdo do arquivo codificado.
  2. |: Envia a saída para o comando tr.
  3. tr 'b-za-a' 'a-z':
    • O primeiro conjunto 'b-za-a' consiste em:
      • 'b-z': letras de b até z
      • 'a-a': a letra a
      • Portanto, o primeiro conjunto completo é: b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a
    • O segundo conjunto 'a-z' é: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
    • Isso cria um mapeamento onde cada letra no primeiro conjunto é substituída pela letra correspondente no segundo conjunto:
      • b (1º no primeiro conjunto) → a (1º no segundo conjunto)
      • c (2º no primeiro conjunto) → b (2º no segundo conjunto)
      • ...
      • a (26º no primeiro conjunto) → z (26º no segundo conjunto)
    • Isso efetivamente desloca cada letra na entrada uma posição para trás no alfabeto (descriptografia da cifra de César).
    • Nota: O comando tr realiza a tradução caractere por caractere, portanto, apenas as letras minúsculas são afetadas. Letras maiúsculas como o "T" no início da mensagem permanecem inalteradas porque não correspondem a nenhum caractere no primeiro conjunto.

Este tipo de substituição é uma forma muito simples de criptografia chamada cifra de César. Embora não seja segura para uso no mundo real, é um ótimo exemplo de como o tr pode ser usado para substituição de caracteres.

Usando Classes de Caracteres com tr

O comando tr suporta várias classes de caracteres, que são conjuntos predefinidos. Elas podem ser muito úteis para transformações de texto mais complexas. Vamos usá-las em um cenário prático.

Primeiro, crie um arquivo com conteúdo misto:

echo "User123 logged in at 09:45 AM on 2023-08-15" > ~/project/log_entry.txt

Dicas: Você pode copiar e colar os comandos de criação de arquivo no terminal para criar os arquivos corretamente.

Agora, vamos extrair apenas os dígitos desta entrada de log:

cat ~/project/log_entry.txt | tr -cd '[:digit:]'

Você deverá ver:

12309452023815

Vamos detalhar este comando:

  1. cat ~/project/log_entry.txt: Lê o conteúdo do arquivo de log.
  2. |: Envia a saída para o comando tr.
  3. tr -cd '[:digit:]':
    • A opção -c complementa o conjunto (significa "o que não estiver neste conjunto").
    • A opção -d exclui os caracteres especificados.
    • [:digit:] é uma classe de caracteres que representa todos os dígitos (0-9).
    • Juntos, -cd '[:digit:]' significa "excluir todos os caracteres que não sejam dígitos".

Este comando é útil para extrair dados numéricos de textos mistos, o que pode ajudar em tarefas de análise de log ou limpeza de dados.

Compactando Repetições com tr

O comando tr também pode "compactar" (squeeze) caracteres repetidos em uma única ocorrência. Isso é útil para limpar dados com repetições desnecessárias. Vamos criar um arquivo com alguns caracteres repetidos e depois limpá-lo.

Primeiro, crie um arquivo com espaços repetidos:

echo "This    is    a    test    with    extra    spaces." > ~/project/spaced.txt

Dicas: Você pode copiar e colar os comandos de criação de arquivo no terminal para criar os arquivos corretamente.

Agora, vamos usar o tr para compactar os espaços repetidos:

cat ~/project/spaced.txt | tr -s ' '

Você deverá ver:

This is a test with extra spaces.

Vamos detalhar este comando:

  1. cat ~/project/spaced.txt: Lê o conteúdo do arquivo com espaços extras.
  2. |: Envia a saída para o comando tr.
  3. tr -s ' ':
    • A opção -s compacta repetições do caractere especificado em uma única ocorrência.
    • ' ' especifica que queremos compactar os caracteres de espaço.

Este comando é particularmente útil ao lidar com dados mal formatados ou quando você precisa normalizar espaços em branco em um arquivo de texto.

Resumo

Neste laboratório, exploramos o versátil comando tr no Linux. Aprendemos como:

  1. Converter maiúsculas e minúsculas
  2. Excluir caracteres específicos
  3. Traduzir múltiplos caracteres
  4. Usar classes de caracteres
  5. Compactar caracteres repetidos

O comando tr é uma ferramenta poderosa para manipulação de texto. Aqui estão algumas opções adicionais que não cobrimos em detalhes:

  • -c: Complementa o conjunto de caracteres no string1, ou seja, opera em todos os caracteres que não estão no string1.
  • -t: Trunca o string1 para o comprimento do string2.

Para tarefas de processamento de texto mais avançadas, você pode querer explorar outros comandos como sed e awk em laboratórios futuros.

Recursos