0

我有一个文本文件,其中包含以下格式的数据

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

第 1,2 和 3 列按严格的升序排列。我想将第 2 列和第 3 列中的值与它们 ROW 0 中的相应值偏移。也就是说,第 2 列(X)中的每个值都应该是(X - 0x5212cb03ca115ac0) 和第三列相同。我尝试使用 awk 来执行此操作

 awk '{print $1 "  "$2-0x5212cb03ca115ac0 "  "$3-0x3665fb5f1ac1 }' output.txt

我正进入(状态

1  -5914012477826357248  -59811636910785
2  -5914012477826357248  -59811636910785
3  -5914012477826357248  -59811636910785
4  -5914012477826357248  -59811636910785
5  -5914012477826357248  -59811636910785
6  -5914012477826357248  -59811636910785
7  -5914012477826357248  -59811636910785
8  -5914012477826357248  -59811636910785
9  -5914012477826357248  -59811636910785
10  -5914012477826357248  -59811636910785

我不期望这里有负值。为什么会发生这种情况。?

4

1 回答 1

2

如果你有 GNU awk 那么你需要传递-n它才能理解/解析输入中的非十进制数字。否则你只会从0中减去。

于 2013-08-27T02:06:37.007 回答