Re: Mit Sed 2 oder mehr zusammenhängende Zeilen ersetzen möglich ?
Am 06/01/2013 11:12 AM, schrieb benjamin22@gmx.de:
Solche Sachen sind mit sed nicht so leicht. Ich würde empfehlen, auf ein
anderes Tool (z.B. perl) auszuweichen.
### /tmp/datei ###
bla
fuu
# config
alter Schwede
bla
fuu
### ENDE /tmp/datei ###
1. Variante mit sed:
====================
sed '/# config/{n;s/.*/betagter Skandinavier/};' /tmp/datei
bla
fuu
mee
# config
betagter Skandinavier
bla
fuu
mee
# Erklärung:
/regex/{}; # sucht nach regex und führt dann alles aus,
# was in den Klammern steht
n; # einlesen der nächsten Zeile
s/regex/string/m; # ersetzen von regex durch string.
2. Variante mir Perl:
=====================
$ perl -e '$_=join("",<>);s/# config\n alter Schwede/# config\n
betagter Skandinavier/m;print' /tmp/datei
bla
fuu
# config
betagter Skandinavier
bla
fuu
# Erklärung:
$_=join("",<>); # einlesen der Datei in die Variable $_
s/regex/string/m; # ersetzen von regex durch string.
# m = Treat string as multiple lines.
print # implizites "print $_"
Ach ja ... sed kennt die Option -i für in place editing.
j2c René
Reply to: