[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

[Linux] Re: awk



On Wed, 6 Dec 2000, Alejandra Kauffman wrote:

> Hola, estoy trabajando con un shell que usa programacion awk. 
> Necesito imprimir valores hexadecimales en formato decimal o entero.
> Por ejemplo, si tengo F quiero que se imprima el 15.
> 
> No he podido lograrlo, pero no estoy segura si es posible hacerlo directamente mediante formatos de impresion o bien, si yo necesito convertir el valor y despues imprimirlo.
> 
> Si alguien me puede dar alguna sugeencia se los agradecere mcho

BASH(1), el shell estandar de linux, permite constantes hexadecimales al
hacer evaluación aritmética, prueba:

  $ echo $[0xFFFF]

En cambio AWK solo acepta constantes en base 10, así que tienes dos
opciones, o hacer la conversión desde el shell o usar una función en awk
del estilo:

 BEGIN {
    split("0 1 2 3 4 5 6 7 8 9",H);
    H["A"]=10; H["B"]=11; H["C"]=12; H["D"]=13; H["E"]=14; H["F"]=15;

    printf("%d",hex("FFFF"));
 }

 function hex(s) {
    res = 0;
    for(c=0;c<length(s);c++) {
	res *= 16;
	res += H[substr(s,c,1)];
    }
    return res;
 }


Por cierto, te convendría aprender perl para tus escripts, es mucho más
poderoso.

Saludos

Salvador Ortiz



Lista de correo linux en linux net mx
Preguntas linux-owner en linux net mx
http://www.linux.net.mx/



[Hilos de Discusión] [Fecha] [Tema] [Autor]