我在二进制文件中存储了5个双值,方法如下:
perl -e "print pack('d5', (0.001, 0.002, 0.003, 0.004, 0.005))" > file.bin
并且我想将现有文件中的第5个值从CCD_ 1更改为CCD_。
我知道我可以通过使用GNU od
读取替身,比如:
$ od -F -An -j32 -N8 file.bin | xargs
0.005
但是如何在shell中以简单的方式修改其中一个值呢?
GNU od
是否有能力更改它,或者我必须使用其他实用程序(如xxd
),或者我应该使用perl?
perl -i -0777pe'my @n = unpack("d5", $_); $n[4] = 0.008; $_ = pack("d5", @n);' file.bin
-或-
perl -i -0777pe'substr($_, 4*8, 8, pack("d", 0.008))' file.bin
其中:
- CCD_ 6-直接在文件中进行更改
-0777
-将行分隔符更改为undef
,允许通过一次性将所有行提供给Perl来诋毁文件-p
-围绕您的命令设置打印循环0.005
0-允许您从参数中提供程序