답변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