[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: