[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 01.06.2013 14:30, schrieb René Kray:
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é


sehe ich das richtig das du die zeile nach "# config" änderst,
das ist ansich ja nur ein workarround da ich das nächste enabled = false
nach dem [] ändern will :)



@frank küster habe ich versucht aber gibt mir keine Änderung aus
fail2ban als Sklave benutzt war grad auf dem testrechner drauf :)

sed -e '/\[named-refudes-udp\]/ {n;s/false/true/}' /etc/fail2ban/jail.conf > /etc/fail2ban/newjail.conf diff /etc/fail2ban/jail.conf /etc/fail2ban/newjail.conf > /etc/fail2ban/test.txt

die test.txt ist immer leer sollte aber inhalt haben :(


@liste : da hat beim copy pasten aus der rechtschreibkorrektur wohl thunderbird n bisl *'chen gebastelt :)

sry dafür



mfg

ben


Reply to: