Bash:替换二进制文件中的一些字节

4
我有一个名为zero.bin的二进制文件,其中包含10个字节的0x00,还有一个名为data.bin的数据文件,其中包含5个字节的0x01。我想用data.bin替换zero.bin的前5个字节。我尝试了以下命令: dd if=data.bin of=zero.bin bs=1 count=5 但是,zero.bin被截断了,最终变成了5个字节的0x01。我想保留后面的5个字节的0x00。
3个回答

9
没问题,只需添加 conv=notrunc 即可:
dd if=data.bin of=zero.bin bs=1 count=5 conv=notrunc

1

你已经有了一半的解决方案;将其写入临时文件tmp.bin而不是zero.bin,然后

dd if=zero.bin bs=1 seek=5 skip=5 of=tmp.bin
mv zero.bin old.bin # paranoia
mv tmp.bin zero.bin

0

不要局限于使用dd(1)。还有其他工具,例如:

(cat data.bin && tail -c +5 zero.bin) > updated.bin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接