mehrere Zeilen ersetzen?

P

Pinky69

Grünschnabel
Hallo,

ich bin neu hier und habe mit Unix noch nicht allzuviel Erfahrung, bin aber bestrebt mehr zu lernen.

Kann ich mit sed auch mehrere Zeilen (zwei aufeinander folgende) durch neue Angaben ersetzen ? Ist eine ASCII-Datei.

also ungefähr so:
.
.
text1
text2
..
durch
.
.
textneu1
textneu2
.
.

PS: ich arbeite mit Solaris10 auf einer Sparc

Gruß
Pinky
 
"Gleichzeitig" ersetzen: Nein, sed liest zeilenweise ein.

Mehrere in einem File: Ja klar, Aber halt zeilenweise.
 
Hmm, schade.

Habe eben das Problem das text1 nur ersetzt weden darf wenn text2 z.B. xyz heist, also einen bestimmten wert/Inhalt hat.
 
Hallo
Doch das geht.
sed kennt N;

Aber Solaris sed ist etwas eigen, was mehrere Befehle und loop betrifft.

Normalerweise würde ich bis zum Ende immer zwei Zeilen einlesen, im Patternspace die Ersetzung machen und ausgeben.

Code:
sed -n '$!N; s/\(.*\)\n\(.*\)/\1neu\n\2neu/g;p'
Das meint:
Solange nicht Ende, addiere nächste Zeile in Patternspace (N)
Nun ersetze s/...
Ausgeben p
Vermutlich wirst du unter Solaris die Befehle durch mehrere -e hintereinandersetzen müssen.

Mehr dazu sagt dir deine Manpage.

Gruß Wolfgang

Edut:
sehe gerade deinen Beitrag:
Dann müsstest du eben vor dem Ersetzen noch eine Bedingung setzen.
Code:
/.*xyz/s/.../
 
Zuletzt bearbeitet:

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Text mit mehreren Zeilen und Sonderzeichen ersetzten

.cfg Datei Analysieren und Zeilen Stellenweise abändern

Suchen und ersetzen in HTML Dokumenten

Zeilen löschen und ersetzen mit sed

Zurück
Oben