Tool zum suchen/ersetzen, n Regex in m Dateien?



  • Hallo,
    Kennt ihr ein vernünftiges Tool zum suchen/ersetzen von mehrere Ausdrücken in mehreren Dateien?
    Das Tool sollte reguläre Ausdrücke beherrschen.
    Man sollte mehrere Ausdrücke angeben können (also in einer Art Script, speicherbar), die dann unabhängig voneinander gemached werden.
    Das ganze über mehrere Dateien.
    Für Windows.

    Ich kenne BK Replace'Em, finde es aber sehr fummelig.

    PS: sed und awk sind mir zu gruselig 😉
    Mit sed könnte ich mich eventuell anfreunden, aber es ist da glaub mühsam Blöcke von mehrere Zeilen auf einmal durch geänderte Blöcke zu ersetzen?
    Ausserdem arbeitet sed nur auf einer Datei, man müsste also noch nen batch drumrum schreiben dass die Dateien durchgeht.



  • Och, das geht doch recht angenehm mit ner Batch-Datei und sed:

    cd files
    for /R %%i in (*.*) do (
        sed "%%i" -e "s/foo/bar/g" > "%%i.new"
        move "%%i" "%%i.old"
        move "%%i.new" "%%i"
        del "%%i.old"
    )
    cd ..
    


  • scrontch schrieb:

    PS: sed und awk sind mir zu gruselig 😉

    Dann mach den nächsten Schritt und nimm Perl.



  • Hmm, Perl nicht, aber Python.
    Btw, hat jemand ne Ahnung wie man in einer Regex einen Block über mehrer Zeilen matched?
    Soweit ich sehe, brechen die meisten RegEx Parser bei newline immer ab.



  • sed hängt mir N die nächste Zeile an den work buffer dran. Google einfach mal nach
    sed multiple lines
    oder sowas.
    Python hat natürlich auch ein feines RE-Modul. 🙂



  • scrontch schrieb:

    Btw, hat jemand ne Ahnung wie man in einer Regex einen Block über mehrer Zeilen matched?

    In Python: re.DOTALL



  • Oliver schrieb:

    In Python: re.DOTALL

    thx! 👍


Anmelden zum Antworten