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 😉
3 replies on “Use o utilitário tr para substituir caracteres dentro de arquivos texto”
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?
De maneira prática, o tr server para traduzir, substituir ou deletar sequências de caracteres (strings).
Pode ser muito útil para desenvolvedores.
Excelente dica, utilizo o tr a muito tempo em diversos scripts. Parabéns.