Text in ASM Quelltext ersetzen mittel SED

Es gibt 8 Antworten in diesem Thema, welches 1.262 mal aufgerufen wurde. Der letzte Beitrag (27. Oktober 2023 um 22:20) ist von 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.

    Bitte melde dich an, um diesen Link zu sehen. 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 -> Bitte melde dich an, um diesen Link zu sehen.
    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 : Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von drazil (27. Oktober 2023 um 18:51)

  • 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 -> Bitte melde dich an, um diesen Link zu sehen.
    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 : Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von drazil (27. Oktober 2023 um 20:05)

  • Yeah... danke ! :respect:

    Vorstellung Raveolution BBS -> Bitte melde dich an, um diesen Link zu sehen.
    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 : Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

  • 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'

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • 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 -> Bitte melde dich an, um diesen Link zu sehen.
    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.

    Bitte melde dich an, um diesen Link zu sehen.

    :D