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

Re: Mit Sed 2 oder mehr zusammenhängende Zeilen ersetzen möglich ?



Frank Küster schrieb am Samstag, den 01. Juni 2013:

> Christian Brabandt <dug@256bit.org> writes:
> > christian@R500 ~ % sed  '/\[trigger\]/,/^$/s/\(enabled=\)true/\1false/g' /tmp/foobar > /tmp/foobar.out
> 
> Kannst Du diese Syntax erklären?  Was macht speziell das Komma? Und wo
> in info sed finde ich was dazu

(Fast) jedes Kommando in sed arbeitet mit Adressen (sogar wenn keine 
angegeben werden). Diese Adressen schreibt man vor das Kommando. Wenn 
das "s" Kommando verwendet wird und man keine Adresse angibt, arbeitet 
es implizit auf jeder Zeile, und das entspricht den Adressen 1,$.

Anstelle von Zeilennummern kann man aber auch patterns als Adressen 
angeben. Die patterns werden durch // definiert.

/foobar/s ersetzt also in allen Zeilen, die /foobar/ matchen.
/foobar/,$s ersetzt dann ab der ersten Zeile wo foobar matched bis zum 
Textende.

Mehr infos zum Thema sed habe ich mal hier aufgeschrieben:
http://www.freiesmagazin.de/mobil/freiesMagazin-2010-03.html#10_03_sed
http://blog.256bit.org/archives/565-Eine-kleine-Einfuehrung-in-sed,-Teil-1.html
http://blog.256bit.org/archives/576-Eine-kleine-Einfuehrung-in-sed,-Teil-2.html
http://blog.256bit.org/archives/648-Eine-kleine-Einfuehrung-in-sed,-Teil-3-Abschluss.html

> (Ich habe auch nichts zu meinem Strichpunkt gefunden...)?

Damit trennt man Kommands ab. Also erst ersetzen, dann beenden:
s/foobar/blahfasel/;q

Grüße
Christian
-- 
Verschiedenheit der Religionsmeinungen findet sich nur bei
Alltagsmenschen. Leute von Geist haben nur eine Religion.
		-- Karl Julius Weber (Demokritos)


Reply to: