Estou confuso sobre a forma -s, -te -copçõ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é de, 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 -sopçã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 -copçã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.
-sopção faztrcom 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 .