Ersetzen Sie einen Absatz nach einer Zeichenfolge


0

Ich habe eine Textdatei mit vielen Zeilen und Absätzen

Ich möchte eine Zeichenfolge durch eine Zeichenfolge ersetzen

Beispiel:

Alte Textdatei

Sometexts

Neue Textdatei

Sometexts
With Some Lines
Paragraphs
and Some Thing More 

Wie kann ich das erreichen?


1
Fügen Sie dieser Frage weitere Details hinzu. In Ihrer Beschreibung steht "Ersetzen", aber Sie fügen nur das Ende hinzu. Warum können Sie nicht ausschneiden und einfügen oder nur den zusätzlichen Text eingeben?
Paul

Ich verstehe nicht, warum Sie mehrere filesin Ihrem Beispiel haben (alte Textdatei und neue Textdatei). Was hat die alte Textdatei mit der neuen Textdatei zu tun? Suchen Sie eine Methode, um Daten von einer zur anderen zu lesen?
Dave

Nein, ich möchte einer Textdatei nach einer Zeichenfolge nur einige Absätze hinzufügen.
Der KingMaker

Antworten:


1

Ihre Frage ist nicht klar. Ich gehe davon aus, dass Sie ersetzen möchten

sometexts

mit

Sometexts
With Some Lines
Paragraphs
and Some Thing More 

Wenn ja, können Sie verwenden Notepadd++

Angenommen, Sie möchten jedes Mal, wenn das Wort sometextsangezeigt wird, eine Aktualisierung durchführen , drücken Sie Control+ F, um das Suchfeld aufzurufen. Wählen Sie die Registerkarte Ersetzen.

Im Find whatFeld geben Sie das Wort Sie suchen möchten ( sometexts) und in der Replace withBox, fügen Sie den neuen Text ein . Fügen Sie \nfür jede neue Zeile neue Zeilen hinzu, um neue Zeilen hinzuzufügen .

Wählen Sie dann im Suchmodus Extended

Bildbeschreibung hier eingeben

Und ich klicke auf Alle ersetzen, es wird aktualisiert auf:

Bildbeschreibung hier eingeben


Danke für die Antwort, aber ich möchte dies per Bash tun
The KingMaker

1

Angenommen, der neue Text befindet sich in einer Datei mit dem Namen "newtext.txt":

sed '/Sometexts/ r newtext.txt' old.txt > new.txt

Nur für das 2. Vorkommen reicht sed nicht aus. awk ist perfekt geeignet:

$ cat old.txt
one
Sometexts
two
Sometexts
three
Sometexts
four

$ cat newtext.txt 
With Some Lines
Paragraphs
and Some Thing More 

$ awk '{print} /Sometexts/ && ++n==2 {while (getline < "newtext.txt") print}' old.txt
one
Sometexts
two
Sometexts
With Some Lines
Paragraphs
and Some Thing More 
three
Sometexts
four

Hallo, diese Sache funktioniert wirklich, aber was ist, wenn ich die 'Sometexts'-Zeichenfolge nur beim 2. Vorkommen ersetzen möchte?
Der KingMaker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.