imprimindo uma série de caracteres

3

Meu objetivo final aqui é gerar um bloco de texto que possa ser usado para testar várias fontes em um terminal. Eu quero gerar o arquivo como basicamente um gráfico ASCII. Uma série de personagens de 1 a 255 vai fazer, eu não estou preocupado com sinos, ou espaço em branco ou qualquer coisa, muito simples.

Se eu quiser digitar todos os números, posso fazer algo assim:

printf '\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a'
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Mas eu não quero ter que digitá-los todos. Eu sei que posso usar printf e seq com um sub-shell para gerar algum hex

printf %x' ' 'seq 65 90'
41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a

Alguém pode me ajudar a ligar os pontos aqui?

Não preciso de uma tabela ascii formal, mas gostaria de ver todos os caracteres visíveis para poder testar melhor as várias fontes.

    
por slf 05.06.2015 / 16:46

3 respostas

1

Talvez seja assim:

perl -e 'for(65..90) { printf "%c", $_ }'

Ou, se você insistir em fazer isso com printf(1) no Linux:

printf $( printf '\x%02x' $( seq 65 90 ) )

Ou com printf(1) em * BSD:

printf $( printf '\x%02x' $( jot - 65 90 1 ) )
    
por 05.06.2015 / 16:55
3

POSIX um:

$ awk 'BEGIN{for(n=33;n<=90;n++)printf "%c",n}'                              
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ

Perl um:

$ perl -e 'print chr for 33..90'
    
por 05.06.2015 / 17:15
1

Com bash >= 3.0 , ksh93r e acima, zsh :

printf $( printf '\x%02x' {65..90})
    
por 05.06.2015 / 16:59