Schnell und einfach per Python:
<script> #!/usr/bin/env python3 # -*- coding: utf-8 -*- # # replace.py # original_Str = "Abschnitt 1 \nWort1 blabla Wort2\nAbschnitt 2\nWort1 blabla Wort2\nAbschnitt 3\nWort1 blabla Wort2" print(original_Str) # str.replace(strVariable, old, new[, count]) replacedStr1 = str.replace(original_Str, "Wort1 ", "") replacedStr2 = str.replace(replacedStr1, "Wort2", "") print(replacedStr2) </> sollte das ergeben was Du dir vorstellst. und es geht bestimmt noch einfacher zum Schreiben :-) Gruß ManfredDanke für alle Ideen. Damit muss ich mich aber erst mal auseinandersetzen. Bei Bedarf melde ich mich dann wieder. Guten Rutsch Klaus
Hallo Klaus!
Wenn du die Regexp-Manpage von Python liest,
https://docs.python.org/3/library/re.html
findest du da den Unterschied zwischen "greedy"=sucht einen möglichst
großen Treffer und "non-greedy"=sucht den minimalen Treffer.
Vielleicht ist es das, dass du nur <Start>.*?<Stop> (non-greedy "all
characters") im DOTALL-Modus (DOT matcht auch Newline) durch einen
Leerstring ersetzen musst?
Irgendwas wie
import re
with open(myfile) as f:
data = f.read()
newdata = re.sub("<Startword>.*?<Stopword>", "", data, flags=re.DOTALL)
with open(outfile, "w") as f2:
f2.write(newdata)
irgendwie so, ungetestet.
Ich denke, wenn dir Python nicht liegt, werden die regular expressions
in deinem Lieblingssystem vielleicht Äquivalente zu DOTALL und non-greed
match haben.
Hope that helps
Hartmut