답변1
비결은 입력 시 awk가 16진수를 자동으로 해석하지 않는다는 것입니다. 함수 를 사용하여 명시적으로 그렇게 하도록 요청해야 합니다 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