Ok, quindi grazie a @Prvt_Yadv sono stato in grado di capire i punti. Ecco la prima risposta alla domanda:
Qual è la magia dietro il secondo tr
comando?
I 13 punti vengono semplicemente associati alle prime 13 lettere del secondo set. Così
tr .............A-Z A-ZA-Z
produrrà i seguenti set:
SET1 -> .............ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Se il tuo input non contiene un punto, puoi scartare la sequenza iniziale, dal momento che non userai quella sostituzione. Quindi i set diventerebbero:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Ma poiché il primo set contiene già tutte e 26 le lettere e set2 ha ripetute lettere finali, anche quelle vengono scartate, diventando infine
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLM
Qual è la sostituzione di rot13 e identica al primo comando (eccetto per non trattare qui le minuscole). La stessa logica può essere applicata per il titolo della domanda:
tr ...A-Z A-ZA-Z <<< “JVPQBOV”
produrrebbe i set:
SET1 -> ...ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ
Scartando la sequenza iniziale e le lettere ripetute finali diventano:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> DEFGHIJKLMNOPQRSTUVXWYZABC
Qual è la sostituzione di rot3.
Ora per la seconda domanda:
Come far funzionare il secondo comando sia in minuscolo che maiuscolo, proprio come il primo comando?
Per farlo funzionare, inserisci il numero desiderato di punti all'inizio, facendo corrispondere il tuo marciume e 26 punti tra la sequenza superiore e la sequenza inferiore, proprio in questo modo:
tr ........A-Z..........................a-z A-ZA-Za-za-z
Ciò creerebbe con successo un rot8 insensibile. Per visualizzare perché funziona, vediamo i set:
SET1 -> ........ABCDEFGHIJKLMNOPQRSTUVXWYZ..........................abcdefghijklmnopqrstuvxwyz
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyzabcdefghijklmnopqrstuvxwyz
Escludendo la mappatura dei punti e le lettere finali:
SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyz
SET2 -> IJKLMNOPQRSTUVXWYZABCDEFGHijklmnopqrstuvxwyzabcdefgh
Ora funziona sia in maiuscolo che in minuscolo :)
Un altro modo per farlo funzionare è usare due tr
comandi come segue:
tr .............A-Z A-ZA-Z <<< "ABJ V hqrefgnaq" | tr .............a-z a-za-z
Un avvertimento sull'uso della sostituzione dei punti è stato dato da @iruvar: questo comando non funzionerà come previsto quando la stringa di input ha punti. Questo perché i punti vengono mappati su altre lettere e quando si esegue la sostituzione, tr
il punto di input verrà modificato sull'ultima lettera mappata. Ma puoi effettivamente usare qualsiasi altro personaggio oltre ai punti. Pertanto, se l'utilizzo dei punti nel tr
comando è un problema, è possibile utilizzare @
invece, ad esempio. Funzionerebbe altrettanto bene:
tr @@@@@@@@@@@@@A-Z A-ZA-Z <<< "GUNAX LBH NYY..."