Compactando Caracteres com tr
Outra funcionalidade útil do comando tr é sua capacidade de "comprimir" caracteres repetidos, substituindo ocorrências consecutivas do mesmo caractere por uma única instância. Essa funcionalidade é particularmente valiosa ao lidar com texto que contém excesso de espaços em branco ou outros caracteres repetidos.
A Opção Squeeze em tr
Para comprimir caracteres repetidos usando o comando tr, você usa a opção -s seguida pelo conjunto de caracteres que deseja comprimir:
tr -s SET1
Onde SET1 é o conjunto de caracteres que você deseja comprimir.
Criando um Arquivo de Texto de Exemplo com Excesso de Espaços em Branco
Vamos criar um arquivo de exemplo com excesso de espaços em branco que podemos usar para praticar:
echo 'Error: Too much whitespace.' > ~/project/whitespace.txt
Este comando cria um arquivo chamado whitespace.txt no diretório /home/labex/project com texto que inclui múltiplos espaços consecutivos.
Comprimindo Espaços no Texto
Agora, vamos usar o comando tr com a opção -s para comprimir múltiplos espaços em espaços únicos:
tr -s ' ' < ~/project/whitespace.txt
Quando você executar este comando, deverá ver a seguinte saída:
Error: Too much whitespace.
Observe que os múltiplos espaços entre as palavras foram reduzidos a espaços únicos, tornando o texto mais legível.
Entendendo o Comando
Vamos detalhar o que aconteceu:
tr -s ' ' instrui o comando a comprimir ocorrências repetidas de um caractere de espaço em um único espaço.
- O símbolo
< redireciona o conteúdo de ~/project/whitespace.txt como entrada para o comando tr.
- O resultado é exibido no terminal, mas não é salvo no arquivo.
Salvando a Saída em um Novo Arquivo
Se você quiser salvar o texto com espaços comprimidos em um novo arquivo, pode usar o redirecionamento de saída:
tr -s ' ' < ~/project/whitespace.txt > ~/project/clean_whitespace.txt
Para verificar o conteúdo do novo arquivo, use o comando cat:
cat ~/project/clean_whitespace.txt
Você deverá ver:
Error: Too much whitespace.
Combinando Operações tr
O comando tr permite que você combine operações. Por exemplo, você pode traduzir caracteres e comprimi-los em um único comando:
tr 'a-z' 'A-Z' -s ' ' < ~/project/whitespace.txt
Este comando converterá todas as letras minúsculas em maiúsculas e também comprimirá múltiplos espaços em espaços únicos.
Criando um Exemplo Mais Complexo
Vamos criar um exemplo mais complexo para praticar:
echo 'log entry: error code 404 not found' > ~/project/complex.txt
Agora, vamos usar tr para converter todas as letras em maiúsculas e comprimir espaços:
tr 'a-z' 'A-Z' -s ' ' < ~/project/complex.txt > ~/project/processed_complex.txt
Para ver o resultado:
cat ~/project/processed_complex.txt
Você deverá ver:
LOG ENTRY: ERROR CODE 404 NOT FOUND
Agora você aprendeu como usar o comando tr para comprimir caracteres repetidos no texto. Isso, combinado com as capacidades de tradução e deleção que você aprendeu anteriormente, oferece um conjunto de ferramentas poderoso para manipulação de texto no Linux.