Primeiro de tudo, você poderia simplificar seus 2 printfs + 1 eco para um único printf, eu acho:
for i in {0..25}; do
printf '%b%b\n' \$( printf '%03o' $((i+65)) ) \$( printf '%03o' $((-~i%26+65)) )
done
Se você quiser manter tudo no shell, use o truque descrito aqui Escrevendo um caractere N vezes usando o comando printf , ie
for i in {0..25}; do
printf "$(printf '%b%b' \$( printf '%03o' $((i+65)) ) \$( printf '%03o' $((-~i%26+65)) ))%.0s" {1..13}
printf \n
done
ou, de forma mais transparente
for i in {0..25}; do
printf -v xy '%b%b' \$( printf '%03o' $((i+65)) ) \$( printf '%03o' $((-~i%26+65)) )
printf "${xy}%.0s" {1..13}
printf \n
done
Se você não está usando shell puro, algumas outras técnicas para reduplicar cada par de letras que vem à mente são
-
usando o operador de multiplicação do perl
. . . | perl -lne 'print $_ x 13'
-
usando um loop sed
. . . | sed -E ':a; /.{26}/! s/../&&/; ta'
Na verdade, você também poderia fazer o emparelhamento de letras em sed
$ printf \%b {A..Z} A \n |
sed -E '/^Z/! s/(.)(.)/&\n/; P;D; b' | sed -E ':a; /.{26,}/! s/../&&/; ta'
ABABABABABABABABABABABABAB
BCBCBCBCBCBCBCBCBCBCBCBCBC
CDCDCDCDCDCDCDCDCDCDCDCDCD
DEDEDEDEDEDEDEDEDEDEDEDEDE
EFEFEFEFEFEFEFEFEFEFEFEFEF
FGFGFGFGFGFGFGFGFGFGFGFGFG
GHGHGHGHGHGHGHGHGHGHGHGHGH
HIHIHIHIHIHIHIHIHIHIHIHIHI
IJIJIJIJIJIJIJIJIJIJIJIJIJ
JKJKJKJKJKJKJKJKJKJKJKJKJK
KLKLKLKLKLKLKLKLKLKLKLKLKL
LMLMLMLMLMLMLMLMLMLMLMLMLM
MNMNMNMNMNMNMNMNMNMNMNMNMN
NONONONONONONONONONONONONO
OPOPOPOPOPOPOPOPOPOPOPOPOP
PQPQPQPQPQPQPQPQPQPQPQPQPQ
QRQRQRQRQRQRQRQRQRQRQRQRQR
RSRSRSRSRSRSRSRSRSRSRSRSRS
STSTSTSTSTSTSTSTSTSTSTSTST
TUTUTUTUTUTUTUTUTUTUTUTUTU
UVUVUVUVUVUVUVUVUVUVUVUVUV
VWVWVWVWVWVWVWVWVWVWVWVWVW
WXWXWXWXWXWXWXWXWXWXWXWXWX
XYXYXYXYXYXYXYXYXYXYXYXYXY
YZYZYZYZYZYZYZYZYZYZYZYZYZ
ZAZAZAZAZAZAZAZAZAZAZAZAZA
Deve ser possível em uma única chamada de sed, algo como
printf \%b {A..Z} A \n |
sed -E ':1; /^Z/! s/(.)(.)/&\n/; :2; /.{26}\n/! s/../&&/; t2; P;D; b1'
mas não consigo obter a condição de finalização correta sem recorrer a extensões exóticas do GNU
printf \%b {A..Z} A \n |
sed -E ":1; /^Z/! s/(.)(.)/&\n/; :2; /.{26}(\n|\')/M! s/../&&/; t2; P;D; b1"