ersetzt mehrere Linienmuster in sed

8

Ich möchte einfach folgendes tun

ersetzen

%Vor%

von

%Vor%

in der Eingabedatei. Dafür habe ich versucht

%Vor%

Das funktioniert nicht. Kann jemand vorschlagen, was wäre der richtige Weg, dies mit Sed zu tun?

    
bbv 17.11.2011, 09:11
quelle

6 Antworten

5
%Vor%

würde es tun.

Das Problem dabei ist, dass es die gesamte Eingabekette in seds Puffer speichert.

Siehe sed und Multi-Line Search and Replace für mehr Infos und eine effizientere Version.

    
Bertrand Marron 17.11.2011 09:23
quelle
3

sed -e '/begin/,/end/{s/begin/replacement/p;d}'

    
BCS 26.02.2013 14:59
quelle
3
%Vor%     
Sidharth C. Nadhan 29.04.2013 09:33
quelle
1
%Vor%

getestet unten:

%Vor%

wenn Sie die Datei inline ändern möchten. füge eine -i-Flagge hinzu. wie:

%Vor%     
Vijay 29.04.2013 11:59
quelle
0

Dies könnte für Sie funktionieren:

%Vor%

oder wenn Sie die Originaldatei bearbeiten möchten:

%Vor%

BEARBEITEN: wie gewünscht ist hier ein Beispiel:

%Vor%

EDIT: Wenn die erste und die letzte Adresse aufeinanderfolgende Zeilen sind, verwenden Sie diese:

%Vor%

Ein anderer Weg (vielleicht einfacher?):

%Vor%     
potong 17.11.2011 20:13
quelle
0

Es ist schwierig, es in sed zu tun, muss tief geschrieben werden. Sie können jedoch Einzeiler mit Perl verwenden:

%Vor%

wo -0777 ist Datensatztrennzeichen (Endzeile in Textdateien) -p startet den Befehl für alle Dateien und druckt auf dem Bildschirm -e sagt seinen einzeiligen Befehl

    
Master Yoda 14.01.2015 09:45
quelle

Tags und Links