Estou confuso sobre a forma -s
, -t
e -c
opções de trabalho no tr comando. Quando eu faço
echo I am a good boy | tr good bad
Eu recebo a saída:
I am a bddd bdy
Isso é bastante compreensível, pois o
é repetido em good
. A última mudança possível no lugar de o
é d
e, portanto, a saída.
Agora quando eu faço
echo I am a good boy | tr -s good bad
a saída é
I am a bd bdy
A -s
opção deve espremer todas as ocorrências repetidas de cada caractere no conjunto 1 em uma única ocorrência e depois alterar cada caractere no conjunto 1 para o caractere correspondente no conjunto 2, que está na mesma posição.
Então deveria ter sido
I am a bad bay.
Por que a mudança?
Além disso, quando eu faço
echo I am a good boy | tr -c good bad
eu recebo dddddddgoodddodd
Como funciona a -c
opção tr
, referindo-se a este exemplo?
E finalmente: como mudar de um garoto bom para um garoto ruim .... :): P Ou seja,
echo I am a good boy | tr <something>
dá-me a saída como: I am a bad boy
.
-s
opção faztr
com que todos os caracteres do último argumento sejam espremidostr
(não o primeiro, como você diz) que são repetidos na entrada. Isso é observado no artigo que você vinculou e é explicado no último parágrafo na seção "Descrição" da página de manual .