tr
explica isso muito bem; é um filtro que converte caracteres de um conjunto para outro. O primeiro conjunto especificado é [a-z]
, que é uma forma abreviada de digitar [abcdefghijklmnopqrstuvwxyz]
. O segundo é [n-za-m]
, que se transforma em [nopqrstuvwxyzabcdefghijklm]
. tr
lê cada caractere de stdin e, se aparecer no primeiro conjunto, ele o substitui pelo caractere na mesma posição no segundo conjunto (isso significa que [
e ]
estão sendo substituídos por si mesmos, portanto, incluir eles eram inúteis, mas muitas pessoas fazem isso por engano porque expressões regulares os usam para representar classes de caracteres, então eles acham que tr
os requer).
Então, um exemplo mais simples:
$ echo abc | tr ab xy
xyc
a
se transformou em x
, b
se transformou em y
e c
não foi alterado porque não estava no primeiro conjunto. Todos os usuários fizeram neste caso o mesmo endereço de e-mail através do mesmo filtro (já que é simétrico - a
mapeia para n
e n
de volta para a
, etc.) para obter a versão rotacionada ; você a executa novamente troca todos os caracteres de volta aos originais
Sidenote: Essa troca em particular, onde cada letra é substituída por uma das 13 letras distintas no alfabeto, é chamada ROT13 (rodar 13); era popular em grupos de notícias como uma forma de ocultar coisas que as pessoas podem não querer ver