* Mukunda Peter Pasedach ([EMAIL PROTECTED]) wrote/schrieb:

> Wenn ich 
> 
>  sed -e 's/..\/icons\//\ /g' test.html > test.html
> 
> mache, dann ist test.html danach leer. Wenn ich > test.html.2 sage, dann
> funktioniert das schon. So richtig perfekt ist das sed Kommando auch
> noch nicht, wie ginge das richtig mit dem löschen? Momentan ersetze ich
> ja nur "../icons/" durch ein Leerzeichen.

Das funktioniert so nicht. Sed muß immer über eine temporäre Datei laufen.

Also: cat test.html | sed -e 's/foo/bar/' > test.tmp && mv test.tmp test.html

Ich benutze sed ausschließlich als Filter, weil das irgendwie das
Verständnis erleichtert, für mich jedenfalls.

Dann solltest Du noch daran denken, daß der "." selbst ein regulärer
Ausdruck ist, der "irgendein" Zeichen matcht. Im Zweifelsfall also \.
schreiben.

Wenn Du löschen willst, gibst Du als Ersetzungsmuster einfach _nichts_ an,
also: "s/foo//g". "/foo/d" würde die ganze Zeile löschen, in der das Muster
steht, das wirst Du nicht wollen.

Wenn das nur einmalig gemacht werden soll, bietet sich allerdings an, es
mit vi zu machen. 

        :%s/foo//g

Hatte ich schon erwähnt, daß "sed & awk" von O'Reilly das beste Unix-Buch
auf diesem Planeten ist? Das gibt echt Einsichten fürs Leben. :-]

Ciao,

-martin

-- 
I haven't lost my mind; I'm sure it's backed up on tape somewhere!
---------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an