¿Cómo convierto un carácter ASCII a ASCII HEX en un script AWK?
Quiero recorrer un rango de letras.
ejemplo
for(i="a"; i<"g"; i++)
print i;
NOTA: Quiero recorrer un rango desde la representación hexadecimal e imprimir el carácter.
Respuesta1
Me parece que realmente no necesitastodolos caracteres...
$ 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
Respuesta2
Cree una tabla que contenga todos los caracteres ASCII y utilice el comando interno awk index()
para buscar caracteres en la tabla. Luego utilícelo sprintf()
para convertir el valor decimal devuelto index()
a 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 en el archivo "foo" y ejecútelo awk -f foo < /dev/null
y verá los valores ASCII para "a", "A" y "!" impreso en hexadecimal.
Respuesta3
awk no tiene funciones ord(), chr() como python. Primero debe crear una matriz en el bloque BEGIN cuyo índice sea un carácter ascii y el valor sea un 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