Re: Mit Sed 2 oder mehr zusammenhängende Zeilen ersetzen möglich ?
Hallo benjamin22!
benjamin22@gmx.de schrieb am Samstag, den 01. Juni 2013:
> Erst mal einen schönen Samstag euch :),
>
> ich möchte meine Neuinstallationen automatisieren und dazu muss ich
> auch das eine oder andere Script umschreiben / erweitern lassen.
>
> Gibt es einen weg z.b. das hier zu machen mit "sed" oder anders ist
> mir egal muss eine Lösung für mein sh Script sein :)
>
> ...
>
> *# blah Start*
>
> **
>
> *echo "ich bin ein Text und bleibe bestehen"*
>
> **
>
> *echo "ich bin zu ersetzen"*
>
> **
>
> *[trigger1]**
> **enabled = false*
>
> **
>
> *echo "und ich bleibe auch bestehen"**
> **# blah Ende*
> ...
> die per "[trigger1]" definierte "enabled = false" zu finden und in
> "enabled = true" zu ändern
>
>
>
> Die Sed Syntax ist doch :
>
>
> *Sed 's;;;g' /root/installer/test1.sh > /root/installer/test1_new.sh*
>
> d.h. Ich könnte es so machen : ( natürlich in einer Zeile aber das
> ist unübersichtlich :) )
>
>
> # - - - - -
>
>
> *sed 's;*
>
> **
>
> *[trigger1]\nenabled = false*
>
> **
>
> *;*
>
> **
>
> *[trigger1]\nenabled = true*
>
> **
>
> *;g' /root/installer/test1.sh > /root/installer/test1_new.sh*
>
> # - - - - -
>
> er führt die Zeile zwar aus aber in der neuen Datei steht 1:1 der
> Text von Datei "test.sh"
>
> ich hoffe jemand hat mir einen Tipp wie ich das lösen kann :)
Örgs, das ist ja nicht zu lesen....
Das funktioniert nicht, weil sed zeilenweise arbeitet. Hier ein Beispiel
wie man es machen könnte.
#v+
christian@R500 ~ % sed '#' /tmp/foobar
blahfasel
blahfasel
[trigger]
enabled=true
foobar
enabled=true
christian@R500 ~ % sed '/\[trigger\]/,/^$/s/\(enabled=\)true/\1false/g' /tmp/foobar > /tmp/foobar.out
0 2048 christian@R500 ~ % sed '#' /tmp/foobar.out
blahfasel
blahfasel
[trigger]
enabled=false
foobar
enabled=true
#v-
Grüße
Christian
Reply to: