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

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: