shell脚本/实用程序替换二进制文件中的2字节unicode

shell脚本/实用程序替换二进制文件中的2字节unicode

我有很多大的 Unicode 文件。我想用新的 Unicode 字节对替换每个 Unicode 字节对。例如,原始文件包含“C3 B9 C3 AB C3 B8 C3 B0”,我想将其替换为“D7 A0 D7 A8 D7 9B D7 A9”。我需要将整个文件中的每个“C3 B9”替换为“D7 A0”。将有大约 30 个不同的“C3 XX”值被“D7 YY”值替换。我需要一个表来循环每次替换。

理想情况下,这将替换原始文件,但它也可以创建新的输出文件。

是否有一个在 Ubuntu 下运行的实用程序可以完成这项工作?

答案1

用 Perl 就可以做到这一点,

示例文件:

echo -e "\xe8\x90" > a

现在如果你这样做:

perl -pne 's/\xe8\x90/\x41\x42/g' < a > output

你得到0x41 0x42,即AB

答案2

perl 调用的替代方法是使用 sed

sed -i.bckp -e "s/\xc3\xb9/\xd7\xa0/" file

使用流编辑器(sed),我让它执行就地执行(意味着它将直接修改文件),并且我提供 .bckp 作为 -i 的参数,以便备份旧文件。然后我运行一个交换表达式,它使用正则表达式查找十六进制字节,并将其与您想要使用的字节交换。对文件的调用是您希望执行此操作的大文件。

如果您想要就地替换而不备份(例如文件位于存储库中),那么您只需删除 -i 之后的 .bckp 即可,它不会创建任何新文件。

相关内容