Re: Zeilen zwischen 2 Wörtern löschen
Klaus Becker schrieb:
>
>
> Am 01/01/2022 um 18:24 schrieb Stefan Klein:
> > Dir auch ein Frohes Neues!
> >
> > Am Sa., 1. Jan. 2022 um 17:55 Uhr schrieb Klaus Becker
> > <colonius47@gmail.com <mailto:colonius47@gmail.com>>:
> >
> > Erstmal Frohes Neues !
> >
> > Ich möchte per Skript in einer Textdatei immer wiederkehrende Zeilen
> > zwischen 2 Wörtern löschen (inklusive "Wort1" und "Wort2")
> >
> > Das habe ich mit
> >
> > sed -i '/Wort1,/,/Wort2/d' textdatei.txt
> >
> > versucht. Klappt, aber zu gut! Wenn der Text, der mit "Wort1" beginnt
> > und mit "Wort2" endet z. B. am Anfang und am Ende der Datei auftaucht,
> > wird alles gelöscht, was ich natürlich nicht will.
> >
> >
> > Bei mir verhält sich sed anders als von dir beschrieben:
> >
> > $ echo -e 'start wort1 del1 wort2 keep1 wort1 del2 wort2' | sed
> > '/wort1/,/wort2/d
> >
> > sed löscht die ganze Zeile, füge ich Umbrüche ein:
> >
> > $ echo -e 'start\nwort1,\ndel1\nwort2\nkeep1\nwort1\ndel2\nwort2' | sed
> > '/wort1/,/wort2/d'
> > start
> > keep1
> >
> > bleibt der Text "außerhalb" von /wort1/,/wort2/ stehen.
> >
> > Kannst du das Problem genauer formulieren?
>
>
> Ich will's mal versuchen. Ich habe einen Text
>
>
> Abschnitt 1
> Wort1 blabla Wort2
> Abschnitt 2
> Wort1 blabla Wort2
> Abschnitt 3
> Wort1 blabla Wort2
>
> Die Abschnitte bestehen jeweils aus vielen Zeilen und enthalten
> jedesmal einen anderen Text. "Wort1 blabla Wort2" ist immer der gleiche
> Text.
>
> Ich möchte die Zeilen mit "Wort1 blabla Wort2" ganz löschen, die
> anderen Abschnitte aber intakt lassen. Meine obige Lösung würde z. B.
> nur "Abschnitt 1" übriglassen.
>
> Der Hintergrund: ich mache mir fast jeden Tag mit Artikeln aus dem Web
> meine eigene Zeitung und drucke sie. Ich habe mir ein Skript
> zusammengebastelt, das den gesamten zu druckenden Text nach meinen
> Wünschen bearbeitet, vor allem alles überflüssige löscht.
>
> Klaus
>
> >
> > Grüße,
> > Stefan
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ß
Manfred
--
Errare humanum est, sed in errare perseverare diabolicum.
> Irren ist menschlich, aber im irrtum zu verharren, ist teuflisch <
von dem Theologen Hieronymus
Reply to: