用sed替换十六进制(带通配符?)

问题描述 投票:1回答:2

我有一个游戏的数据文件,里面有翻译。不同的字符串由2个字节的HEX分隔。其中一个似乎是随机的,另一个总是00

这些“分隔符”的例子是qazxsw poi qazxsw poi qazxsw poi - 你可以看到其中一些字符是可打印的。

我试图替换sed 1F 00中的字符,但似乎sed与HEX不喜欢通配符。

我还以为我可以用44 00替换15 00,然后删除每一行的最后一个字符,但这对几个可打印的字符不起作用。

以下是从数据文件中获取的示例部分:

sed -i 's/\x..\x00/\x0D\x0A/g' file.data

HEX:

00

也许我太累了想出一个解决方案,或者我错过了一些明显的东西。如果有人能给我一个提示,那将会很棒。

谢谢。

编辑:想出来。可能有点复杂,但在我的情况下工作:

0D
bash sed hex
2个回答
0
投票
s�Block#�%s has been added to your Blacklist�XP�Get Reputation Points�Add to Friends�%s is already your FriendD�Use Magazines to increase Commander's Leadership.
(Success Rate: %s)�Increase Failed'�Leadership successfully upgraded by %d!�Upgrade Leadership

WOMM,但请告诉我你的结果。


0
投票

弄清楚了。可能有点复杂,但在我的情况下工作:

73 05 00 42 6C 6F 63 6B 23 00 25 73 20 68 61 73 20 62 65 65 6E 20 61 64 64 65 64 20 74 6F 20 79 6F 75 72 20 42 6C 61 63 6B 6C 69 73 74 02 00 58 50 15 00 47 65 74 20 52 65 70 75 74 61 74 69 6F 6E 20 50 6F 69 6E 74 73 0E 00 41 64 64 20 74 6F 20 46 72 69 65 6E 64 73 19 00 25 73 20 69 73 20 61 6C 72 65 61 64 79 20 79 6F 75 72 20 46 72 69 65 6E 64 44 00 55 73 65 20 4D 61 67 61 7A 69 6E 65 73 20 74 6F 20 69 6E 63 72 65 61 73 65 20 43 6F 6D 6D 61 6E 64 65 72 27 73 20 4C 65 61 64 65 72 73 68 69 70 2E 0A 28 53 75 63 63 65 73 73 20 52 61 74 65 3A 20 25 73 29 0F 00 49 6E 63 72 65 61 73 65 20 46 61 69 6C 65 64 27 00 4C 65 61 64 65 72 73 68 69 70 20 73 75 63 63 65 73 73 66 75 6C 6C 79 20 75 70 67 72 61 64 65 64 20 62 79 20 25 64 21 12 00 55 70 67 72 61 64 65 20 4C 65 61 64 65 72 73 68 69 70
© www.soinside.com 2019 - 2024. All rights reserved.