【发布时间】:2024-01-21 10:55:02
【问题描述】:
我的需要是替换 .so 文件中某个文本的所有大小写。
我使用 vim 打开文件,然后使用:%!xxd 将其转换为可读格式,如下面的示例输出:
000001a0: f217 4dce 4321 4118 3940 1326 9a3a 62f6 ..M.C!A.9@.&.:b.
000001b0: 2fde ecdd 0000 0000 0300 0000 a800 0000 /...............
000001c0: 0100 0000 0600 0000 88c2 2001 0007 4109 .......... ...A.
000001d0: a800 0000 ac00 0000 ae00 0000 4245 d5ec ............BE..
000001e0: bae3 927c 7092 55aa 694a b111 d871 581c ...|p.U.iJ...qX.
000001f0: b98d f10e ebd3 ef0e 0000 0000 0000 0000 ................
我的问题是,使用这种结构,我无法搜索换行符,从而无法通过搜索/替换结果来替换文本。
有没有办法让 vim 只显示十六进制值,而不显示换行符?
也欢迎任何其他允许在换行符上替换文本的解决方案(因此可以一次性完成)。
谢谢!
【问题讨论】:
-
您可以通过告诉 xxd 每行执行超过 16 个字节并将它们全部组合在一起而不用空格来减少糟糕的情况:
:%!xxd -c 60 -g 60 -
谢谢,这肯定会有所帮助。为了在完成后将其反转,
:%!xxd -r -c 60 -g 60是否有效?它执行了一个没有错误的反转,但我不确定它是否正确。 -
您确定文本编辑器会正确保存二进制文件吗?