Android

Comando Tr no linux com exemplos

Shell Bash - Execução simples e sequencial de comandos no Linux

Shell Bash - Execução simples e sequencial de comandos no Linux

Índice:

Anonim

tr é um utilitário de linha de comando nos sistemas Linux e Unix que converte, exclui e extrai caracteres da entrada padrão e grava o resultado na saída padrão.

O comando tr pode executar operações como remover caracteres repetidos, converter maiúsculas em minúsculas e substituir e remover caracteres básicos. Normalmente, é usado em combinação com outros comandos através da tubulação.

Neste tutorial, mostraremos como usar o comando tr através de exemplos práticos e explicações detalhadas das opções mais comuns.

Como usar o comando tr

A sintaxe para o comando tr é a seguinte:

tr OPTION… SET1

tr aceita dois conjuntos de caracteres, geralmente com o mesmo comprimento, e substitui os caracteres dos primeiros conjuntos pelos caracteres correspondentes do segundo conjunto.

Um SET é basicamente uma sequência de caracteres, incluindo os caracteres especiais com escape de barra invertida.

No exemplo a seguir, tr substituirá todos os caracteres da entrada padrão (linuxize), mapeando os caracteres do primeiro conjunto pelos correspondentes do segundo conjunto.

echo 'linuxize' | tr 'lin' 'red'

Cada ocorrência de l é substituída por r , i com e n com d :

reduxeze

Os conjuntos de caracteres também podem ser definidos usando intervalos de caracteres. Por exemplo, em vez de escrever:

echo 'linuxize' | tr 'lmno' 'wxyz'

você pode usar:

echo 'linuxize' | tr 'ln' 'w-z'

Quando a opção -c ( --complement ) é usada, tr substitui todos os caracteres que não estão no SET1.

No exemplo abaixo, todos os caracteres, exceto "li", serão substituídos pelo último caractere do segundo conjunto:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

Como você deve ter notado, a saída acima tem mais um caractere visível que a entrada. Isso ocorre porque o comando echo imprime um caractere de nova linha invisível que também é substituído por y . Para ecoar uma sequência sem uma nova linha, use a opção -n .

A opção -d ( --delete ) informa ao tr para excluir os caracteres especificados em SET1. Ao excluir caracteres sem apertar, especifique apenas um conjunto.

O comando abaixo removerá os caracteres l , z :

echo 'Linuxize' | tr -d 'liz'

O caractere L não é excluído porque a entrada inclui um L maiúsculo enquanto o caracter l no SET é minúsculo.

Lnuxe

A opção -s (- --squeeze-repeats ) substitui uma sequência de ocorrências repetidas pelo conjunto de caracteres no último SET.

No exemplo a seguir, tr remove os caracteres de espaço repetido:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

Quando SET2 é usado, a sequência do caractere especificado em SET1 é substituída por SET2.

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

A opção -t ( --truncate-set1 ) força tr para truncar SET1 no comprimento de SET2 antes de continuar o processamento.

Por padrão, se SET1 for maior que SET2 tr reutilizará o último caractere de SET2. Aqui está um exemplo:

echo 'Linux ize' | tr 'abcde' '12'

A saída mostra que o caractere e do SET1 corresponde ao caractere mais recente do SET2, que é 2 :

Linux iz2

Agora, use o mesmo comando com a opção -t :

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

Você pode ver que os três últimos caracteres do SET1 foram removidos. SET1 se torna 'ab', o mesmo comprimento que SET2 e nenhuma substituição é feita.

Combinando opções

O comando tr também permite combinar suas opções. Por exemplo, o comando a seguir substitui primeiro todos os caracteres, exceto i com 0 e depois pressiona os 0 caracteres repetidos:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

Exemplos de comandos Tr

Nesta seção, abordaremos alguns exemplos de usos comuns do comando tr .

Converter minúsculas em maiúsculas

A conversão de minúsculas para maiúsculas ou reversa é um dos casos de uso típicos do comando tr . corresponde a todos os caracteres minúsculos e corresponde a todos os caracteres maiúsculos.

echo 'Linuxize' | tr '' ''

LINUXIZE

Em vez de classes de caracteres, você também pode usar intervalos:

echo 'Linuxize' | tr 'az' 'A-Z'

Para converter maiúsculas em minúsculas, basta mudar os locais dos conjuntos.

Remova todos os caracteres não numéricos

O comando a seguir remove todos os caracteres não numéricos:

echo "my phone is 123-456-7890" | tr -cd

representa todos os caracteres de dígito e, usando a opção -c , o comando remove todos os caracteres que não são de dígito. A saída terá a seguinte aparência:

1234567890

Coloque cada palavra em uma nova linha

Para colocar cada palavra em uma nova linha, precisamos corresponder a todos os caracteres não alfanuméricos e substituí-los por uma nova linha:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

Remover linhas em branco

Para excluir as linhas em branco, basta pressionar os caracteres de nova linha repetitivos:

tr -s '\n' < file.txt > new_file.txt

No comando acima, estamos usando o símbolo de redirecionamento < para passar o conteúdo do file.txt para o comando tr . O redirecionamento > grava a saída do comando em new_file.txt .

Imprimir diretórios $PATH em uma linha separada

A variável de ambiente $PATH é uma lista de diretórios delimitada por dois-pontos que informa ao shell quais diretórios procurar arquivos executáveis ​​quando você digita um comando.

Para imprimir cada diretório em uma linha separada, precisamos corresponder os dois pontos (:) e substituí-lo pela nova linha:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

Conclusão

tr é um comando para traduzir ou excluir caracteres.

Embora muito útil, o tr pode funcionar apenas com caracteres únicos. Para correspondência mais complexa de padrões e manipulação de strings, você deve usar sed ou awk .

terminal tr