Linux tux ninja

Use o utilitário tr para substituir caracteres dentro de arquivos texto

O tr, no Linux, é usado para traduzir ou remover caracteres dentro de arquivos de sequências de texto.
Pode ser usado também para fazer substituições de caracteres, como veremos nos exemplos abaixo — que fazem uso também do utilitário cat.
Para os meus exemplos, vou criar um arquivo a partir do /etc/fstab:


cp /etc/fstab teste.txt

Agora tenho um lugar mais seguro para brincar…
Este é o conteúdo original dele:


cat teste.txt 

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sdb1 during installation
UUID=ae9797c5-677a-400d-aad7-4fbe960b94ad /               btrfs   defaults        0       0
# /home was on /dev/sda1 during installation
UUID=d44c3678-1743-4c24-85b1-a6f437f4bb87 /home           btrfs   defaults        0       0
# o swap fica em /dev/sdb2 /dev/sda2 
/dev/sdb2   swap    swap    defaults    0   0
/dev/sda2   swap    swap    defaults    0   0

Como substituir espaços por tabulações dentro de um arquivo texto

Com o pipe |, é possível passar o conteúdo de um arquivo texto para o tr, que realiza o procedimento, no caso abaixo, de substituir os espaços por tabulações:


cat teste.txt | tr ':[space]:' '\t' > teste-a.txt

Use o cat, para ver o resultado no arquivo teste-a.txt:


cat teste-a.txt

Se você prefere substituir cada espaço por 2 espaços, troque o ‘\t’ por ‘ ‘ (com 2 espaços dentro):


cat teste.txt | tr ':[space]:' '  ' > teste-a.txt

Experimente usar ‘ ‘ (com espaços de verdade dentro), em vez de ‘:[space]:’, para ver a diferença.

Como converter todos os caracteres minúsculos para maiúsculos e vice-versa, dentro de um texto

Com o comando abaixo, vamos converter o conteúdo do arquivo teste.txt de minúsculas para maiúsculas:


cat teste.txt | tr a-z A-Z > teste-b.txt

Veja o meu resultado:


cat teste-b.txt 

# /ETC/FSTAB: STATIC FILE SYSTEM INFORMATION.
#
# USE 'BLKID' TO PRINT THE UNIVERSALLY UNIQUE IDENTIFIER FOR A
# DEVICE; THIS MAY BE USED WITH UUID= AS A MORE ROBUST WAY TO NAME DEVICES
# THAT WORKS EVEN IF DISKS ARE ADDED AND REMOVED. SEE FSTAB(5).
#
#                
# / WAS ON /DEV/SDB1 DURING INSTALLATION
UUID=AE9797C5-677A-400D-AAD7-4FBE960B94AD /               BTRFS   DEFAULTS        0       0
# /HOME WAS ON /DEV/SDA1 DURING INSTALLATION
UUID=D44C3678-1743-4C24-85B1-A6F437F4BB87 /HOME           BTRFS   DEFAULTS        0       0
# O SWAP FICA EM /DEV/SDB2 /DEV/SDA2 
/DEV/SDB2   SWAP    SWAP    DEFAULTS    0   0
/DEV/SDA2   SWAP    SWAP    DEFAULTS    0   0

Se você tem alguma sugestão de uso do tr, deixe a gente saber, nos comentários 😉

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

3 thoughts on “Use o utilitário tr para substituir caracteres dentro de arquivos texto”

  1. Olá Elias, gostaria de saber qual é a função prática deste comando. Ele serve para trabalhar o que/ou com o que/ou para que/ para que tipo de profissional e ou serviço executado no Linux?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *