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