答案1
訣竅在於,在輸入時,awk 不會自動解釋十六進位數字。您必須要求它使用該strtonum
函數明確地執行此操作。因此,當您需要代碼中的數字時,請將其替換$3
為strtonum($3)
。
例子
我們以此作為測試文件:
$ cat file
0x7f7488c4e6d7: R 0x7f7488b169ce
0x7f7488c4e6e9: R 0x7f7488b169cc
0x7f7488c4e6f8: R 0x7f7488b169d0
讓我們使用它作為腳本:
$ 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"
}
螢幕輸出如下圖所示:
$ ./a.awk file
2
fffffffffffffffe
輸出文件是:
$ cat diff
0x7f7488b169cc 2
0x7f7488b169d0 -2