Ich verwende einen Compiler für eine alte Spielkonsole, aber dieser Compiler akzeptiert nur ANSI-Zeichen. Dies ist ein Problem, da das Spiel auf Japanisch ist und UTF-8 benötigt wird. Als Workaround habe ich ein Batch-Skript geschrieben, das sed ausführt, um jedes japanische Zeichen im Dokument durch den entsprechenden Byte-Wert in Hexadezimalzahl zu ersetzen.sed: Ersetzen jedes Zeichen einzeln zwischen Trennzeichen
Das Haupt sed-Skript sieht wie folgt aus:
chcp 1252
sed "s|\[terminator\]|,$FF|g"^
;"s|ャ|,$00|g"^
;"s|ィ|,$01|g"^
test.asm > test2.asm
So ein String wie "ャ ィ ャ [Terminator]" wird umgewandelt "00, $ 01, $ 00 $, $ FF".
Das Problem ist, dass nicht-japanische Zeichen, die in eine Zeichenfolge eingefügt werden können, wie Ziffern und Satzzeichen, auch überall sonst im Code verwendet werden, so musste ich alternative Versionen dieser Zeichen zu verhindern sed aus der Konvertierung, sagen wir, das Semikolon vor jedem Kommentar, was den Kompilierungsprozess zum Scheitern bringen würde. Diese Problemumgehung zwingt den Benutzer jedoch dazu, jedes dieser alternativen Zeichen in die Zeichenfolge zu kopieren und einzufügen, in der sie Änderungen vornehmen möchten, anstatt sie einfach so einzugeben, wie sie es normalerweise tun würden.
Also ist meine Frage, wie kann ich sed sagen, nur die Zeichen zwischen den Trennzeichen (Pipes) zu ersetzen, anstatt die Ersetzungen überall im Dokument durchzuführen?
Mit anderen Worten, ich möchte sed etwas zu ersetzen, das wie folgt aussieht:
<label> dw $1234 : db |ャィャ[terminator]| ; Comment (blah ャィャ blah)
dazu (Rohre und führende Komma wird später entfernt werden):
<label> dw $1234 : db |,$00,$01,$00,$FF| ; Comment (blah ャィャ blah)
Hinweis Kommentar Teil bleibt unberührt.
Sie sollten Ihre Frage bearbeiten. Niemand scheint es zu verstehen, oder jemand hätte bereits geantwortet. Dieser Teil ist verwirrend: "Aber ich würde gerne mit dem benutzerfreundlicheren Ansatz fortfahren, die Zeichenketten im Originaldokument zu behalten" –
Fertig. Macht es jetzt mehr Sinn? –
Sicher. Sie haben sogar eine Antwort darauf bekommen, was es zu einer Tumblewee-Frage hätte werden können. –