Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Klammer am zeilenende einfügen

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.07.2001
    Ort
    Böblingen
    Beiträge
    69

    Klammer am zeilenende einfügen

    Ist es möglich mit regular expressions oder ähnlichem einen
    Text so zu verändern das Klammern in jeder Zeile am ende angefügt werden
    die mit einem fixen string anfangen aber dazwischen variablen Text enthalten.

    Also
    set_nr(1
    set_art(1
    Soll nachher
    set_nr(1)
    set_art(1)
    sein.
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  2. #2
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Brujah Beitrag anzeigen
    Ist es möglich mit regular expressions oder ähnlichem einen
    Text so zu verändern das Klammern in jeder Zeile am ende angefügt werden
    die mit einem fixen string anfangen aber dazwischen variablen Text enthalten.

    awk -v p=$p '{print $0"("p")"}'
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Wenn ich das richtig verstanden habe, will er nur schließende Klammern anfügen, wenn die Zeile mit einem bestimmten String beginnt...

    im vi ginge zum Beispiel so, für alle Zeilen, die mit set_ beginnen:

    Befehlsmodus -> :%s/^\(set_.*\)$/\1)/g

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.07.2001
    Ort
    Böblingen
    Beiträge
    69
    Genau. Ich möchte nur eine schliessende Klammer am Ende der meisten einfügen. Eben solche die ein set_ enthalten.

    Aber wenn ich "%s/^\(set_.*\)$/\1)/g" im vi eingebe sagt er mir:
    Pattern not found: ^\(set_.*\)$

    Das set_ steht leider nicht am Zeilenanfang:

    Code:
          
          case :      
               set_name("Giant Rat"
               set_nr(1
               set_art(1
               set_lifepoints(3
               set_attack(1
               set_defence(0
               set_strength(1
               set_ruestung(0
               set_spellpower(0
               set_spell(0
               set_range(0
               set_minlevel(1
               set_sound(SOUND_BOAR
               set_ability1(MONSTERSKILL_AMBUSH
               set_ability2(MONSTERSKILL_BACKUP
               set_ability3(MONSTERSKILL_FEAR
               set_ability4(MONSTERSKILL_SLEEPS
               set_ability5(ME_RATTE
          break;
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    hi,

    dann ändere doch den Regexp mal so ab:

    Code:
    %s/\(set_.*\)$/\1)/g
    Das ^ stand für den Zeilenanfang - der spielt nun keine Rolle mehr....

  6. #6
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Geht u. a. auch ohne REGEX.

    awk -v p=$p '{print $0p")"}'
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    aber das fügt doch an JEDEM Zeilenende eine schließende Klammer an... es geht ja um bestimmte Zeilen.

  8. #8
    Registrierter Benutzer
    Registriert seit
    22.07.2001
    Ort
    Böblingen
    Beiträge
    69
    Das hat schonmal geholfen.
    Der jetzt funktioniert hat sah letztendlich so aus:
    Code:
    sed 's/\(^.*set.*\)$/\1\;/' monster.cpp > monster2.cpp
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  9. #9
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von michael.sprick Beitrag anzeigen
    aber das fügt doch an JEDEM Zeilenende eine schließende Klammer an... es geht ja um bestimmte Zeilen.
    Stimmt,
    ich hatte seine anfängliche Frage anders verstanden.
    Wieso dort immer eine ) fehlt ist mir ein Rätsel???
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  10. #10
    Registrierter Benutzer
    Registriert seit
    22.07.2001
    Ort
    Böblingen
    Beiträge
    69
    Ich übersetze gerade unseren alten Purebasic Code nach C++.
    Den Rest der Struktur konnte ich schon mit anderen Search-Replaces ersetzen. Nur das Klammer anfügen am Ende ging nicht.
    Aber mit diesem Befehl lassen sich jetzt auch viele der anderen Strukturen leichter umsetzen.
    Wenn wir es bis Mitte Januar schaffen das Spiel vollständig umzusetzen kommen wir in den nächsten Ubuntu Release. Und das ist eigentlich das Ziel :-)
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  11. #11
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Was spricht denn gegen
    Code:
    sed -i -e '/set_.*(/{s/$/)/}' DATEI
    ?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •