Opção de complemento em tr

1

Não consigo entender a opção complement (-c) no comando tr usado junto com o modo de substituição (ou seja, sem outras opções), por exemplo:

echo "a" | tr -c a b

Por que produz:

abroot@Slack

( ab string sem nova linha)?

    
por Mulligan 11.12.2016 / 11:56

1 resposta

3

O comando

tr processa todos os caracteres, incluindo os não-imprimíveis.

echo no seu exemplo produz uma saída composta por dois caracteres:

  • a
  • caractere de nova linha ( \n )

Em sua chamada, você solicitou tr para substituir todos os caracteres que complementam a (em palavras simples: diferente de a ) por b , portanto:

  • deixou o caractere a intacto
  • substituiu o caractere de nova linha por b .

Considere testá-lo com printf (que não inclui implicitamente uma nova linha no final, como echo )

Isso produz a mesma entrada para tr como echo , então a saída também é a mesma:

printf "a\n" | tr -c a b
ab[~]#

Compare com:

printf "a" | tr -c a b
a[~]#

E:

printf "a\n\n" | tr -c a b
abb[~]#
    
por 11.12.2016 / 12:17