Respuesta1
El truco es que, al ingresar, awk no interpreta automáticamente los números hexadecimales. Tienes que pedirle que lo haga explícitamente usando la strtonum
función. Por lo tanto, cuando necesite el número en su código, reemplácelo $3
con strtonum($3)
.
Ejemplo
Tomemos esto como archivo de prueba:
$ cat file
0x7f7488c4e6d7: R 0x7f7488b169ce
0x7f7488c4e6e9: R 0x7f7488b169cc
0x7f7488c4e6f8: R 0x7f7488b169d0
Usemos esto como script:
$ cat a.awk
#!/usr/bin/awk -f
NR==1 {
prev=strtonum($3)
next
}
{
dif=prev - strtonum($3)
printf "%x\n",dif
print $3, dif > "diff"
}
La salida de la pantalla se ve así:
$ ./a.awk file
2
fffffffffffffffe
El archivo de salida es:
$ cat diff
0x7f7488b169cc 2
0x7f7488b169d0 -2