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

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: