Ok, donc grâce à @Prvt_Yadv j'ai pu comprendre les points. Voici la première réponse à la question:
Quelle est la magie derrière la deuxième tr
commande?
Les 13 points sont simplement mis en correspondance avec les 13 premières lettres du deuxième ensemble. Donc
tr .............A-Z A-ZA-Z
produira les ensembles suivants:
SET1 -> .............ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Si votre entrée ne contient pas de point, vous pouvez ignorer la séquence initiale, car vous n'utiliserez pas ces substitutions. Les ensembles deviendraient alors:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Mais comme le premier ensemble contient déjà les 26 lettres et que set2 a une lettre de fin répétitive, celles-ci sont également éliminées, devenant finalement
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLM
Qui est la substitution rot13 et identique à la première commande (sauf pour ne pas traiter les minuscules ici). La même logique peut être appliquée pour le titre de la question:
tr ...A-Z A-ZA-Z <<< “JVPQBOV”
produirait les ensembles:
SET1 -> ...ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
En éliminant la séquence initiale et les lettres répétitives de fin, elles deviennent:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> DEFGHIJKLMNOPQRSTUVXWYZABC
Quelle est la substitution rot3.
Maintenant pour la deuxième question:
Comment faire fonctionner la deuxième commande pour les minuscules et les majuscules, tout comme la première commande?
Pour le faire fonctionner, vous mettez le nombre de points souhaité au début, en faisant correspondre votre pourriture et 26 points entre la séquence supérieure et la séquence inférieure, comme ceci:
tr ........A-Z..........................a-z A-ZA-Za-za-z
Cela créerait avec succès une rot8 insensible. Pour visualiser pourquoi cela fonctionne, voyons les ensembles:
SET1 -> ........ABCDEFGHIJKLMNOPQRSTUVXWYZ..........................abcdefghijklmnopqrstuvxwyz
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyzabcdefghijklmnopqrstuvxwyz
À l'exclusion de la cartographie des points et des lettres de fin:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyz
SET2 -> IJKLMNOPQRSTUVXWYZABCDEFGHijklmnopqrstuvxwyzabcdefgh
Maintenant, cela fonctionne pour les majuscules et les minuscules :)
Une autre façon de le faire fonctionner consiste à utiliser deux tr
commandes comme suit:
tr .............A-Z A-ZA-Z <<< "ABJ V hqrefgnaq" | tr .............a-z a-za-z
@Iruvar a mis en garde contre l'utilisation de la substitution de points: cette commande ne fonctionnera pas comme prévu lorsque la chaîne d'entrée a des points. Cela est dû au fait que les points sont mappés à d'autres lettres et lors de la substitution, tr
changera le point d'entrée à la dernière lettre mappée. Mais vous pouvez réellement utiliser n'importe quel autre caractère que des points. Ainsi, si l'utilisation de points dans votre tr
commande pose problème, vous pouvez utiliser à la @
place, par exemple. Cela fonctionnerait tout aussi bien:
tr @@@@@@@@@@@@@A-Z A-ZA-Z <<< "GUNAX LBH NYY..."