2011-03-26 16 views

Respuesta

34
No

seguro exactamente cómo desea utilizar esto, pero aquí hay un ejemplo básico para empezar:

echo '[email protected]' | tr 'A-Za-z' 'N-ZA-Mn-za-m' 

Para hacerlo más fácil, se puede crear un alias del comando tr en su archivo .bashrc así:

alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" 

Ahora usted puede llamar:

echo '[email protected]' | rot13 
+0

¿es necesario usar a-z como SET 1 y n-za-m en set2 puede usarse de alguna otra manera? Me refiero a az pzaq set2 –

+4

Cualquier otra combinación no sería rotura ** 13 ** ;-) – nickgrim

+1

Además, si quieres rot13 los dígitos (que no es rot13 tradicional, porque esas son solo las letras), puedes agregar 0-9 a SET1 y 3-90-2 a SET2. – xizdaqrian

5

Rubí (1.9+)

$ ruby -ne 'print $_.tr("A-Za-z", "N-ZA-Mn-za-m") ' file 

Python

$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")' 
0

Una tarea perfecta para tr, de hecho. Esto debería hacer lo que desee:

tr 'A-Za-z' 'N-ZA-Mn-za-m' 

Cada carácter en el primer conjunto será reemplazado con el carácter correspondiente en el segundo conjunto. P.ej. A reemplazado por N, B reemplazado por O, etc. Y luego lo mismo para las letras minúsculas. Todos los demás personajes pasarán sin cambios.

Tenga en cuenta la falta de [ y ] donde normalmente podría esperarlas. Esto se debe a que tr trata literalmente los corchetes, no como expresiones de rango. Por lo tanto, por ejemplo, tr -d '[A-Z]' eliminará las letras mayúsculas y corchetes. Si usted quiere mantener sus soportes, utilizar tr -d 'A-Z':

$ echo "foo BAR [baz]" | tr -d '[A-Z]' 
foo baz 
$ echo "foo BAR [baz]" | tr -d 'A-Z' 
foo [baz] 

Lo mismo para las clases de caracteres. P.ej. tr -d '[[:lower:]]' es probablemente un error, y debe ser tr -d '[:lower:]'.

Sin embargo, en situaciones de suerte como esta, ¡puede salirse con la suya incluso con los corchetes! Por ejemplo, tr "[a-z]" "[A-Z]" funciona accidentalmente porque los corchetes del primer conjunto se reemplazan por corchetes idénticos del segundo conjunto, pero en realidad es un mal hábito para entrar. Use tr "a-z" "A-Z" en su lugar.

Cuestiones relacionadas