Como faço para converter um caractere ASCII em ASCII HEX em um script AWK?
Eu quero fazer um loop por um intervalo de letras
exemplo
for(i="a"; i<"g"; i++)
print i;
NOTA: Quero fazer um loop por um intervalo da representação hexadecimal e imprimir o caractere.
Responder1
Parece-me que você realmente não precisatodosos 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
Responder2
Construa uma tabela contendo todos os caracteres ASCII e use o awk integrado index()
para pesquisar caracteres na tabela. Em seguida, use sprintf()
para converter o valor decimal retornado por index()
em 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.
Responder3
awk não possui funções ord(), chr() como python. você deve primeiro criar um array no bloco BEGIN cujo índice é um caractere ASCII e o valor é um 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