Parece-me que você não precisa realmente de todos os personagens ...
$ awk 'BEGIN { chartable="abcdefghij" ; for (i=index(chartable, "a"); i<index(chartable, "g"); i++) { print substr(chartable, i, 1) } }'
a
b
c
d
e
f
Como faço para converter um caracter ASCII em ASCII HEX em um script AWK?
Eu quero loop por um intervalo de letra
exemplo
for(i="a"; i<"g"; i++)
print i;
NOTA: Eu quero um loop por um intervalo a partir da representação hexadecimal e imprimo o caracter.
Parece-me que você não precisa realmente de todos os personagens ...
$ awk 'BEGIN { chartable="abcdefghij" ; for (i=index(chartable, "a"); i<index(chartable, "g"); i++) { print substr(chartable, i, 1) } }'
a
b
c
d
e
f
Crie uma tabela contendo todos os caracteres ASCII e use o awk builtin index()
para caracteres de pesquisa na tabela. Em seguida, use sprintf()
para converter o valor decimal retornado por index()
para hexadecimal.
BEGIN {
for (i = 0; i < 128; i++) {
table = sprintf("%s%c", table, i);
}
}
function chartohex (char) {
return sprintf("0x%x", index(table, char));
}
END { # examples
print chartohex("a");
print chartohex("A");
print chartohex("!");
}
Coloque este código no arquivo "foo" e execute awk -f foo < /dev/null
e você verá os valores ASCII para "a", "A" e "!" impresso em hexadecimal.
o awk não tem funções ord (), chr () como python. você tem que primeiro fazer o array no bloco BEGIN, cujo índice é o caractere ascii e o valor é o número decimal.
awk 'BEGIN {
for (i = 0; i <= 255; i++) {
t = sprintf("%c", i)
a[t] = i
}
for( i=a["a"]; i < a["g"]; i++)
print sprintf("%c",i)
}'
a
b
c
d
e
f
Tags awk