我使用的旧游戏机编译器,但这种编译器只接受ANSI字符。这是一个问题,因为游戏是日文,需要UTF-8。作为一种变通方法,我写的执行已与sed的十六进制同等字节值来代替文档中的每个日文字符批处理脚本。sed的:分隔符之间单独更换每个字符
主要sed脚本是这样的:
chcp 1252
sed "s|\[terminator\]|,$FF|g"^
;"s|ャ|,$00|g"^
;"s|ィ|,$01|g"^
test.asm > test2.asm
因此,像一个字符串 “ャィャ[终结者]” 将被转换为 “$ 00 $ 01 $ 00 $ FF”。
问题是可以插入到文本字符串中的非日语字符(例如数字和标点符号)也在代码中的其他任何地方使用,所以我不得不求助于这些字符的替代版本以防止在每次评论之前都会转换分号,这会使编译过程失败。但是,这种解决方法促使用户复制和粘贴,而不是只是打字他们就像他们通常会每一种备选字符到哪个字符串,他们觉得自己修改。
所以,我的问题是,我怎么能告诉sed只替换字符串分隔符(管道),而不是在文档中到处进行替代的角色?
换句话说,我希望SED更换的东西,看起来像这样:
<label> dw $1234 : db |ャィャ[terminator]| ; Comment (blah ャィャ blah)
这(管道和领先的逗号将会在后面被删除):
<label> dw $1234 : db |,$00,$01,$00,$FF| ; Comment (blah ャィャ blah)
通知的注释部分保持不动。
您应该编辑您的问题。没有人似乎理解它,或者有人已经有答案。这部分令人困惑:“但我想用更方便用户的方式将字符串保留在原始文档中” –
完成“。现在它更有意义吗? –
当然。你甚至得到了一个回应,它可能会成为一个风滚草问题 –