如何从shell脚本更改文件中特定偏移量处的双值



我在二进制文件中存储了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.0050-允许您从参数中提供程序

相关内容

  • 没有找到相关文章

最新更新