Ok, así que gracias a @Prvt_Yadv pude entender los puntos. Aquí está la primera pregunta respuesta:
¿Cuál es la magia detrás del segundo tr
comando?
Los 13 puntos simplemente se asignan a las primeras 13 letras del segundo conjunto. Entonces
tr .............A-Z A-ZA-Z
producirá los siguientes conjuntos:
SET1 -> .............ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Si su entrada no contiene un punto, puede descartar la secuencia inicial, ya que no usará esa sustitución. Entonces los conjuntos se convertirían en:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Pero dado que el primer conjunto ya contiene las 26 letras y el set2 tiene letras finales repetitivas, también se descartan y finalmente se convierten en
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLM
Cuál es la sustitución rot13 e idéntica al primer comando (excepto por no tratar con minúsculas aquí). La misma lógica se puede aplicar para el título de la pregunta:
tr ...A-Z A-ZA-Z <<< “JVPQBOV”
produciría los conjuntos:
SET1 -> ...ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Descartando la secuencia inicial y las letras repetidas finales se convierten en:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> DEFGHIJKLMNOPQRSTUVXWYZABC
Cuál es la sustitución rot3.
Ahora para la segunda pregunta:
¿Cómo hacer que el segundo comando funcione para minúsculas y mayúsculas, al igual que el primer comando?
Para que funcione, coloque el número deseado de puntos al principio, haciendo coincidir su podredumbre y 26 puntos entre la secuencia superior y la secuencia inferior, así:
tr ........A-Z..........................a-z A-ZA-Za-za-z
Esto crearía con éxito una podredumbre insensible8. Para visualizar por qué esto funciona, veamos los conjuntos:
SET1 -> ........ABCDEFGHIJKLMNOPQRSTUVXWYZ..........................abcdefghijklmnopqrstuvxwyz
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyzabcdefghijklmnopqrstuvxwyz
Excluyendo el mapeo de puntos y las letras finales:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyz
SET2 -> IJKLMNOPQRSTUVXWYZABCDEFGHijklmnopqrstuvxwyzabcdefgh
Ahora funciona para mayúsculas y minúsculas :)
Otra forma de hacerlo funcionar es usar dos tr
comandos de la siguiente manera:
tr .............A-Z A-ZA-Z <<< "ABJ V hqrefgnaq" | tr .............a-z a-za-z
@Iruvar dio una advertencia sobre el uso de la sustitución de puntos: este comando no funcionará como se esperaba cuando la cadena de entrada tiene puntos. Esto se debe a que los puntos se asignan a otras letras y al realizar la sustitución, tr
cambiará el punto de entrada a la última letra asignada. Pero en realidad puedes usar cualquier otro personaje que no sean puntos. Entonces, si usar puntos en su tr
comando es un problema, puede usarlo @
, por ejemplo. Esto funcionaría igual de bien:
tr @@@@@@@@@@@@@A-Z A-ZA-Z <<< "GUNAX LBH NYY..."