使用 shell 将字节插入文件

Insert bytes into file using shell

我想使用 linux shell(bash、zsh 等)将一组已知字节插入文件的某个位置。 Similar questions 已被询问,但他们就地修改了文件的字节。这些问题不涉及在特定位置插入新字节。

例如,如果我的文件有一个像 \x32\x33\x35 这样的字节序列,我可能想在位置 2 插入 \x34,这样文件中的这个字节序列就变成了 \x32\x33\x34\x35

您可以同时使用 headtailprintf 来实现此目的。例如;在 file 中的位置 2 插入 \x34:

{ head -c 2 file; printf '\x34'; tail -c +3 file; } > new_file

对于 POSIX-compliance,可以使用 4\x34 的八进制表示)。

要就地进行此更改,只需将 new_file 移动到 file


无论您使用哪种工具,对于大文件,此操作都会花费大量 CPU 时间。