tr
é um utilitário de linha de comando em sistemas Linux e Unix o que se traduz, exclui, e aperta caracteres da entrada padrão e escreve o resultado para a saída padrão.
o comando tr
pode realizar operações como remover caracteres repetidos, converter maiúsculas para minúsculas, e substituir e remover caracteres básicos. Normalmente, é usado em combinação com outros comandos através de tubos.,
neste tutorial, vamos mostrar-lhe 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 tr
comando é da seguinte forma:
tr OPTION... SET1
tr
aceita dois conjuntos de caracteres, geralmente com o mesmo comprimento, e substitui os caracteres dos primeiros conjuntos com os caracteres correspondentes a partir do segundo set.,
a SET
é basicamente uma cadeia de caracteres, incluindo os caracteres especiais escapados.
no exemplo seguinte, tr
irá substituir todos os caracteres da entrada padrão (linuxize), mapeando os caracteres do primeiro conjunto com os correspondentes do segundo conjunto.,
echo 'linuxize' | tr 'lin' 'red'
Cada ocorrência de l
é substituído por r
i
com e
e n
com d
:
reduxeze
Os conjuntos de caracteres também podem ser definidas usando intervalos de caracteres., Por exemplo, em vez de escrever:
echo 'linuxize' | tr 'lmno' 'wxyz'
você pode usar:
echo 'linuxize' | tr 'l-n' 'w-z'
Quando -c
(--complement
) opção é usada, tr
substitui todos os caracteres que não estão no SET1.
no exemplo abaixo, todos os caracteres, excepto “li”, serão substituídos pelo último carácter do segundo conjunto:
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
como poderá ter notado, o resultado acima tem um carácter mais visível do que a entrada., Isto porque o comandoecho
imprime um carácter de newline invisível\n
que também é substituído pory
. Para ecoar uma cadeia sem uma nova linha, use a opção -n
.
a opção -d
(--delete
) diz a tr
para apagar os caracteres especificados no SET1. Ao apagar caracteres sem apertar, indique apenas um conjunto.,
O comando abaixo irá remover l
i
e z
caracteres:
echo 'Linuxize' | tr -d 'liz'
L
caracteres não é excluído porque a entrada inclui um maiúsculas L
enquanto l
caracteres no CONJUNTO de letras minúsculas.
Lnuxe
-s
(--squeeze-repeats
) opção substitui uma seqüência de ocorrências repetidas com o conjunto de caracteres no último SET.,
No exemplo a seguir, tr
remove o repetido caracteres de espaço:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
Quando SET2 é utilizada a seqüência de caracteres especificada no SET1 é substituído com SET2.
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
-t
(--truncate-set1
) opção forças tr
truncar SET1 para o comprimento de SET2 antes de fazer processamento adicional.,
Por padrão, se o SET1 for maior que o SET2 tr
reutilizará o último carácter do SET2. Aqui está um exemplo:
echo 'Linux ize' | tr 'abcde' '12'
A saída mostra que o personagem e
a partir de SET1 é combinado com a mais recente personagem de SET2, que é o 2
:
Linux iz2
Agora, use o mesmo comando com -t
opção:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
Você pode ver que os três últimos caracteres do SET1 são removidos., SET1 torna-se ‘ab’, o mesmo comprimento que SET2, e nenhuma substituição é feita.
combinação de opções #
o comando tr
também lhe permite combinar as suas opções. Por exemplo, o comando a seguir primeira substitui todos os caracteres, exceto i
com 0
e, em seguida, aperta o repetido 0
caracteres:
echo 'Linux ize' | tr -cs 'i' '0'
0i0i0
Tr Exemplos de Comandos #
nesta seção, abordaremos alguns exemplos de usos de tr
comando.,
Convert lower case to upper case #
Converting lower case to upper case or reverse is one of the typical use cases of the tr
command. corresponde a todos os caracteres minúsculos e
corresponde a todos os caracteres maiúsculos.
echo 'Linuxize' | tr '' ''
LINUXIZE
em Vez de classes de personagem, você também pode usar intervalos:
echo 'Linuxize' | tr 'a-z' 'A-Z'
Para converter letras maiúsculas para minúsculas, basta mudar os locais dos jogos.,
Remover todos os caracteres não-numéricos #
O seguinte comando remove todos os caracteres não-numéricos:
echo "my phone is 123-456-7890" | tr -cd
representa todos os caracteres de dígitos, e usando o
-c
opção, o comando remove todos os caracteres não numéricos.,será parecido com este:
1234567890
Colocar cada palavra em uma nova linha #
Para colocar cada palavra em uma nova linha, precisamos corresponder a todos os não-caracteres alfanuméricos e substituí-los com uma nova linha:
echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem
Remover linhas em branco #
Para apagar as linhas em branco simplesmente aperte o repetitivos caracteres de nova linha:
tr -s '\n' < file.txt > new_file.txt
o comando acima estamos usando o símbolo de redirecionamento <
para passar o conteúdo de file.txt
tr
comando., The redirection >
writes the output of the command to new_file.txt
.
Print $PATH directories on a separate line #
The $PATH
environmental variable is a colon-delimited list of directories that tells the shell which directories to search for executable files when you type a command.,
A impressão de cada diretório em uma linha separada nós precisamos combinar os dois pontos (:
) e substituí-lo com a 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 apagar caracteres.
embora muito útil, tr
pode funcionar apenas com caracteres simples. Para uma correspondência de padrões mais complexa e manipulação de texto, você deve usar sed
ou awk
.