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

Re: Zeilen zwischen 2 Wörtern löschen





Am 02/01/2022 um 12:43 schrieb Manfred Gil:
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


Danke für alle Ideen. Damit muss ich mich aber erst mal auseinandersetzen. Bei Bedarf melde ich mich dann wieder.

Guten Rutsch

Klaus


Reply to: