* Michelle Konzack schrieb am 28.Aug.2003: > Versuche gerade Configdateien aus einem Script heraus zu editieren... > Wenn es nur darum gehen w�rde, eine neue aus einer Template zu erstellen, > kein Problem... > > Debian=#irgendwas# > > sed "/#irgendwas#/$(NeuerWert)/" $(Configfile) > $(Configfile)
Nein, so auf keinen Fall, die Datei aus dem sed liest und in der umgelenkt wird mu� eine andere sein. Anschlie�end kann man die neue Datei ja umbenennen. Und bitte nicht auf Tricks wie cat datei | sed .... | cat > datei hereinfallen. Die Pipes wirken wie Puffer. Bei kleinen Dateien funktioniert das, nicht aber bei gro�en. > Nur ist es so, das ich eine bereits vorhandene Configuration �ndern will, > also zum Beispiel > > Debian=gut > in > Debian=super > > Wie kann ich das am besten machen ? /^Debian=/s/gut/super/ Es werden nur Zeilen ber�cksichtigt, in denen Debian= am Anfang steht. Das Suchmuster vor dem s mu� zwingend mit / begrenzt werden. Nach dem s kann jedes beliebige Zeichen stehen etwa: /^Debian=/s|gut|super| oder wenn es unbedingt sein mu� auch: /^Debian=/sagutasupera Du kannst auch einen Bereich eingeben, etwa: /^Debian/,/^Ende/s/gut/super/g hier wird jedes Aufkommen des Wortes gut zwischen der ersten Zeile, die mit Debian anf�ngt und die darauf erste Zeile die mit dem Wort Ende anf�ngt, durch das Wort super ersetzt. Einschlie�lich der beiden begrenzenden Zeilen. Nat�rlich mu� da nicht zwingend ein ^ am Anfang stehen. Es kann da jedes beliebige RegExp stehen. Eine andere M�glichkeit w�re: 3,14s/gut/super/g hier wird jedes gut in den Zeilen 3 bis 14 einschlie�lich durch super ersetzt. Auch Kombinationen gehen: 3,/^Ende/s/gut/super/g /^Debian/,14s/gut/super/g > Eigentlich sollte 'sed' mit dem Editieren ab dem '=' anfangen und > dann bis zum Zeilenende, nur dann gibt es auch wiederum probleme, > denn einige Zeilen haben Komentare dran kleben wie > > Debian=gut # stimmts ? > > die ich allerdings erhalten will. s/=gut\([ ]*#.*\)\?$/=super\1/ Alles was zwischen \( und \) steht wird zu einer Gruppe zusammengefa�t. Wegen des nachfolgenden \? kann es vorkommen, mu� aber nicht. Im Ersetzungsteil wird die durch \1 die erste Gruppe, so wie sie ist hingeschrieben. \2 w�re die zweite Gruppe usw. Hierbei z�hlt die �ffnende Klammer. Es k�nnte ja auch verschachtelt sein. Zwischen [ und ] steht hier ein Leerzeichen und ein Tab. Man k�nnte auch [:blank:] nehmen, ist hier vielleicht sogar besser, da man dann erkennt, was gemeint ist. Bernd -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

