A partir da descrição oficial, é fácil entender o valor desta ferramenta. O Linux vem com uma grande coleção de ferramentas integradas. Existem alguns especiais que são muito úteis para manipulação de texto. Já cobrimos vários deles, como Vim, Nano, awk, sed e outras ferramentas.
Para aqueles que trabalham com textos regularmente, “tr” definitivamente será muito, muito útil. Este artigo ilustrará o uso mais comum de “tr” com exemplos suficientes.
Nota: O tutorial vai usar uma tonelada de arquivos fictícios com conteúdo aleatório. Todas as strings aleatórias são geradas por Aleatório.org.
Localização
qual tr
Este é o caminho completo da ferramenta de comando “tr”.
Uso básico
Para usar a ferramenta “tr”, você deve usar a seguinte estrutura de comando.
trExistem diferentes opções e maneiras de manipular os textos usando “tr”. Primeiro, vamos verificar este arquivo de demonstração.
demonstração de gato.TXT
Todos os caracteres estão em minúsculas, certo? Vamos transformá-los em maiúsculas!
demonstração de gato.txt | tr [: inferior:] [: superior:]
Aqui, o primeiro parâmetro de “tr” indica a realização de uma tradução em todos os caracteres minúsculos da entrada. A segunda parte diz para transformá-los em maiúsculas na saída.
Agora vamos fazer o oposto.
demonstração de gato 1.TXTdemonstração de gato 1.txt | tr [: superior:] [: inferior:]
Também há outra maneira de realizar a mesma tarefa. Vamos dar uma olhada.
demonstração de gato.txt | tr [a-z] [A-Z]
Agora, em vez de dizer a “tr” para traduzir maiúsculas para minúsculas ou minúsculas para maiúsculas, dissemos para identificar as entradas correspondentes ao intervalo de “a” a “z” e traduzir em seu equivalente do intervalo “A” a “Z”.
Este método semelhante também pode ser usado para converter maiúsculas em minúsculas.
demonstração de gato 1.txt | tr [A-Z] [a-z]
Brincando com números
Vimos como traduzir maiúsculas para minúsculas, certo? É hora de brincar com os dígitos.
Usando o seguinte comando, podemos traduzir facilmente todos os dígitos (0-9) em seus caracteres equivalentes!
gato demo_digit.TXTgato demo_digit.txt | tr [0-9] [a-z]
Impressionante! Que tal letras maiúsculas?
gato demo_digit.txt | tr [0-9] [A-Z]
Simples, mas interessante, certo? Também podemos transformar caracteres em dígitos!
cat demo_lowercase.TXTcat demo_lowercase.txt | tr [a-z] [0-9]
Uh oh, parece que as coisas quebraram, certo? Bem, só podemos usar 'a' a 'j' para representar dígitos únicos. Se houver algum caractere fora desse limite, “tr” substituirá o caractere por ']'.
Excluindo personagens
Como a descrição oficial sugere, “tr” pode fazer mais do que apenas traduzir personagens. No exemplo a seguir, veremos como usar “tr” para excluir certos caracteres.
gato aleatório.TXT
Agora, vamos deletar todos os números do conteúdo.
gato aleatório.txt | tr -d [0-9]
Aqui, o sinalizador “-d” é para dizer a “tr” para excluir e [0-9] denotando dígitos para excluir.
Também podemos fazer isso com os personagens. O seguinte comando irámanter todos os números mas removerá todos os caracteres.
gato aleatório.txt | tr -d [a-z]
Que tal remover apenas um único caractere específico do arquivo?
cat demo_lowercase.TXTcat demo_lowercase.txt | tr -d 'y'
Ele excluiu todas as entradas 'y' do arquivo.
Apertando caracteres repetidos
Há momentos em que um caractere é repetido sequencialmente. Se você está lidando com problemas tão irritantes, deixe "tr" cuidar disso! Usando o seguinte comando, você pode comprimir tais ocorrências. Ele essencialmente mantém a ocorrência inicial do caractere e exclui as adicionais.
Primeiro, é hora de verificar a aparência do arquivo de demonstração.
gato duplicado.TXT
Agora, passe o conteúdo para “tr”.
gato duplicado.txt | tr -s [: dígitos:]
Aqui, o parâmetro “-s” é o indicador para realizar a ação “apertar”.
Quebrando / mesclando frases
Vamos verificar o arquivo de demonstração.
duplicata de morcego.TXT
Ele contém uma frase com espaços dividindo as palavras, certo? Vamos dividir as palavras em novas linhas.
duplicata de gato.txt | tr "" "\ n"
Este comando substituiu todos os caracteres de espaço por caracteres de nova linha.
Vamos fundir a frase quebrada em uma frase longa novamente.
duplicata de morcego.TXTduplicata de gato.txt | tr "\ n" ""
Traduzindo personagens
Assim como traduzimos caracteres antes, desta vez faremos o mesmo, mas com apenas um caractere.
demonstração de gato.TXT
Neste arquivo, vamos mudar todos os caracteres de nova linha para um ponto e vírgula.
demonstração de gato.txt | tr "\ n" ";"
Eu tive que envolver em torno de "echo". Caso contrário, ele criaria alguma saída porque o último caractere de nova linha também seria convertido em um ponto-e-vírgula.
Existe uma maneira diferente de mudar personagens. No entanto, este é mais difícil de controlar.
gato duplicado 1.TXTgato duplicado 1.txt | tr -c 'd' 'z'
gato duplicado 1.txt | tr -c 'd' 'z'
Uau! Vamos envolver "echo" para entender melhor a saída.
echo $ (cat duplicate1.txt | tr -c 'd' 'z')
O que aconteceu aqui? Usando a sinalização “-c”, “tr” apenas manterá o personagem alvo inalterado. Em caso de incompatibilidade, todos os outros personagens serão transformados. Aqui, qualquer caractere diferente de 'b' foi substituído por 'z'.
Traduzindo strings
“Tr” também pode funcionar com cordas. Vamos realizar a substituição da corda.
gato duplicado 1.TXTgato duplicado 1.txt | tr "duplicado" "not_duplicate"
Minha corda a ser substituída é mais curta do que a corda a ser substituída, então não cabia.
Conjuntos de caracteres
Até agora, você notou que há uma série de conjuntos de caracteres suportados por “tr”. Embora vários deles tenham sido usados nos exemplos acima, outros conjuntos de caracteres também são bastante úteis. Aqui está uma lista de todas as listas de personagens suportados.
Conjuntos de caracteres POSIX
- [: dígito:]: Dígitos 0-9
- [: alfa:]: Alfabetos a-z e A-Z.
- [: alnum:]: Caracteres alfanuméricos
- [: pontuação:]: símbolos de pontuação
- [: espaço:]: Qualquer caractere de espaço em branco, por exemplo, espaço, tabulação, FF, CR, NL, FF, etc.
- [: maiúsculas:]: Todos os alfabetos maiúsculos
- [: inferior:]: Todos os alfabetos em minúsculas
- [: cntrl:]: Todos os caracteres de controle (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL etc.)
Conjuntos de caracteres adicionais
- [A-Z]: Todos os alfabetos maiúsculos
- [a-z]: Todos os alfabetos minúsculos
- [0-9]: Todos os dígitos
Pensamentos finais
Existem inúmeras maneiras de todos esses recursos do “tr” beneficiarem os usuários. Eu sempre recomendo verificar todas as opções disponíveis e guias detalhados em qualquer ferramenta Linux de suas páginas de manual, informações e ajuda, pois eles podem oferecer um conhecimento mais valioso.
tr --helphomem tr
info tr
Apreciar!