使用基值偏移列中的所有值

时间:2013-08-27 02:00:31

标签: bash sed awk

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

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按严格的升序排列。我想用第7列和第3列中的相应值来偏移第2列和第3列中的值。也就是说第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

我根本不期待负值。为什么会发生这种情况。?

1 个答案:

答案 0 :(得分:2)

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