用不带sed的外壳替换二进制文件中的十六进制

时间:2019-02-04 04:16:03

标签: linux shell sed scripting sh

我有一个二进制文件,我想用0xaa,0xbb,0xcc,0xdd用shell脚本0x11,0x22,0x33,0x44替换

我可以将0xaa,0xbb,0xcc,0xdd放入$ 1之类的shell脚本中,但是如何在不使用sed的情况下将其替换为0x11,0x22,0x33,0x44

1 个答案:

答案 0 :(得分:0)

您可以创建一个bash脚本,对文件进行十六进制转储,进行简单的替换,然后转换回二进制文件。

您可以使用xxd或hexdump之类的应用程序来创建文件的十六进制转储。此处对此进行了说明:convert binary data to hex in shell script?

看起来xxd创建的十六进制字符串看起来像是“ aabbccdd”,而不是您的“ 0xaa,0xbb,0xcc,0xdd”,所以要当心!

要了解如何进行替换,您可以查看以下答案:Find and Replace Inside a Text File from a Bash Command

然后,您需要将HEX字符串转换回二进制,这在这里进行了解释:linux shell scripting: hex string to bytes