tr processa caracteres individuais, não sequências de caracteres. Seus argumentos são conjuntos de caracteres, constituindo um mapeamento um-para-um:
tr aab xyz
significa "substitua a por x , a por y , b por z ". Pode ajudar a ver os dois conjuntos um acima do outro:
tr aab \
xyz
Se o segundo conjunto for menor que o primeiro, ele será estendido pela repetição do último caractere (por padrão). Os conjuntos são lidos em ordem, não aplicados em ordem; Portanto, a substituição " a → y " acima apaga a substituição " a → x " definida anteriormente.