Text in ASM Quelltext ersetzen mittel SED

There are 8 replies in this Thread which has previously been viewed 1,312 times. The latest Post (October 27, 2023 at 10:20 PM) was by next_i.

  • Hallo Leute,

    ich versuche mittels Script meinen Build Prozess von BASIC + Assembler Code in ein per Blitz! Compiler kompiliertes File zu bringen, ohne 5 - 6 manuelle Schritte zu gehen.

    Please login to see this link. hatte ich das gestern schon mal beschrieben.

    Dank des Tips von 1570 mit einer kleinen Änderung bekomme ich die Adresse, die ich für die Assemblierung vom ASM Sourcecode brauche in der Console angezeigt.

    Nun versuche ich schon den ganzen Nachmittag mittels SED die Zeile mit der Basisadresse im ASM Quellcode File zu ändern. Aber leider ziemlich erfolglos.

    Im Internet gibt es diverse Tips wie man mit SED ein Wort oder ein "non-word" löschen kann, aber ich vermute ein non-word das die Zeilenfolge *=$ enthält ist zu mit SED nicht machbar. Oder vielleicht doch ?

    Und genau an der Stelle bräuchte ich mal einen guten Tip von euch.

    Hier nochmal die Zeile die ersetzt, bzw. zumindest gelöscht werden soll:

    Code
    *=$3ab1 "cpn.ml"

    Vorstellung Raveolution BBS -> Please login to see this link.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Naja, das sollte schon gehen. Du musst halt nur bedenken das * und $ controls in regulären Ausdrücken sind. Diese muss man dann escapen.

    Zum Beispiel so: \*\s*=\s*\$[0-9a-fA-F]{4}\s*".*"

    Dieser Ausdruck matched genau auf deine Zeile

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link.

    Edited once, last by drazil (October 27, 2023 at 6:51 PM).

  • Leute ich glaube ich raff es nicht.

    Die letzten 4 Versuche ändern auch nichts in der Datei. Die Zeile ist nach wie vor unverändert vorhanden.

    Vorstellung Raveolution BBS -> Please login to see this link.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • dein sed command sollte dann so ausehen : sed -i 's/\*=\$\([0-9a-fA-F]\)\{4\}\s*".*"//g' test.asm

    Das ersetzt die betreffende Zeile mit einer Leerzeile direkt im File und schreibt es auch zurück

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link.

    Edited once, last by drazil (October 27, 2023 at 8:05 PM).

  • Yeah... danke ! :respect:

    Vorstellung Raveolution BBS -> Please login to see this link.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Freut mich das es geklappt hat.

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link.

  • Bisschen einfacher als s// ist bei sed auch das Ersetzen einer ganzen Zeile per

    '/TEXT_IN_ZU_ERSETZENDER_ZEILE/c\Hier stand vorher eine andere Zeile'

    Dann einfach irgendeinen "Tag" vorher in die Originaldatei und fertig:

    Code
    Blabla
    zuersetzendercode  #derhiermussweg
    Blabla

    ...und dann...

    Code
    sed -i '/derhiermussweg/neuer code  #derhiermussweg'

    Please login to see this link. - Please login to see this link.

  • Ich habe das nun wie folgt gelöst:

    Code
    cbase$ sed -i '3a\*\=\$'"$(python3 /home/larry/C64/bbs/larrymod/scripts/getaddr.py)" cpn-ml.asm

    Das getaddr Python Script stammt von 1570 aus dem anderen heute so compiliert... Threat.

    Vorher wurde die alte Zeile mit dem ersten SED Command bereits aus der Datei entfernt / gelöscht.

    Damit noch einmal ganz herzlichen Dank an euch beiden !!!

    Vorstellung Raveolution BBS -> Please login to see this link.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Hier nochmal die Zeile die ersetzt, bzw. zumindest gelöscht werden soll:

    Code
    *=$3ab1 "cpn.ml"

    Würde mich nicht mit "sed" rumschlagen, wenn ich Python auf dem System habe:

    Den Output kannst Du dann mit " > out" dahin leiten, wohin Du ihn haben willst.

    Please login to see this link.

    :D