我有一个以下格式的文本文件。
1 0x5212cb03ca115ac0 0x3665fb5f1ac1
2 0x5212cb03ca115cc0 0x3665fb5f1ac7
3 0x5212cb03ca115ea0 0x3665fb5f1acd
4 0x5212cb03ca1160c0 0x3665fb5f1ad3
5 0x5212cb03ca1162a0 0x3665fb5f1ad9
6 0x5212cb03ca1164c0 0x3665fb5f1ade
7 0x5212cb03ca1166a0 0x3665fb5f1ae4
8 0x5212cb03ca1168a0 0x3665fb5f1aea
9 0x5212cb03ca116aa0 0x3665fb5f1af0
10 0x5212cb03ca116ca0 0x3665fb5f1af6
命令:
awk '{print $1 " "strtonum($2)-0x5212cb03ca115ac0 " "strtonum($3)-0x3665fb5f1ac1 }' output.txt
我得到的输出如下。
1 0 0
2 1024 6
3 2048 12
4 2048 18
5 2048 24
6 3072 29
7 4096 35
8 4096 41
9 4096 47
10 5120 53
如果您看到第 2 列中的值有一些重复的值。(2048 和 4096)。这是由于使用 strtonum 时精度损失引起的
有人可以提出一些方法来达到同样的效果,但避免这种精度损失。