我有二进制文件,其中包含各种长度的数据结构。我想将这些数据块保存到单独的文件中。每个块的大小是已知的。 split
命令可以拆分文件,但在第一个数据块之后不会停止。它将文件切成相同大小的片段。
因此,我当前的解决方案是将split
和cat
文件的其余部分重新组合在一起,遍历数据。这非常笨拙,在某些情况下甚至可能会失败。
在某些位置精确切割二进制文件的最佳方法是什么?
答案 0 :(得分:6)
您可以使用两个独立的dd
命令。一个是任意寻求,另一个是任意长度。
SEEK=501
BYTES=387
dd if=yourfile bs=$SEEK skip=1 | dd bs=$BYTES count=1 > lump.bin
注意:尽管与您实际尝试的内容相反,但请将块大高和低数量保持在一起以获得最佳性能。我的意思是,如果你想要8192个字节,请使用bs=8192 count=1
而不是bs=1 count=8192
。