"A.Loesch"
Ok, was mache ich: Für die einzelne Datei würde ich das so machen: sed -e 's/datei1.html\" class=\"submenu/&UndNochwas/g' datei1.html
Jetzt zu vielen Dateien:
so sollte es gehen: for f in `find verzeichnis -name "*.html"` do sed -e "s/$f\" class=\"submenu/&UndNochwas/g" < $f > $f.x mv $f.x $f done Wie funktioniert's: for f in `find ...` ist eine Schleife über alle Dateinamen, welche find findet. sed ... $f $f ist die "Laufvariable". Noch ein paar Bemerkungen:
find *.html -type f | xargs sed -e 's/$1\"class=\"submenu/&UndNochwas/g' $1 Problem (das sehen die Experten wahrscheinlich direkt :) ) sed löst das $1 nicht auf :(
logisch mit $1, $2 usw wird auf die Parameter eines Shellskriptes zugegriffen. Generell: Auflösen der Variablennamen zu Werten wird von der Shell erledigt, nicht von sed. sed bekommt also nicht $1 "zu sehen", sondern den Wert des ersten Parameters des Shellscriptes oder falls nicht angegeben der leere String.
Dann folgt noch das 2. Problem, ich will nachher ja den gleichen Dateinamen wiederhaben, sed -e'' a > a funktioniert ja nicht, dann bekomme ich eine leere Datei, also umleiten in was temporäres > abc.temp und wie bekomme ich das dann in diesem Schritt wieder umbenannt? gar nicht. immer so wie oben gezeigt: proggi < file > file.x mv file.x file (wobei es natürlich nicht .x heissen muß, irgend ein anderer Name tuts auch).
xargs konsumiert den $1 irgendwie, so dass ich da nicht nochmal inder Form:
find *.html -type f | xargs sed -e 's/$1\" class=\"submenu/&UndNochwas/g' $1 > temp ; cp temp $1
Das macht was ganz anderes! 1. $1 sie meine Bemerkung von oben 2. find ... | xargs proggi ruft proggi mit sovielen Dateinamen (genauer Ausgaben von find) auf, wie es das Betriebsystem zulässt. (Jdes Betriebssystem hat eine obere Grenze was die Länge der Parameter eines Programmes angeht). Reicht ein Aufruf von proggi nicht, wird eben noch ein zweiter usw. abgesetzt. 3. find ... | xargs proggi ; cp temp $1 - $1 s.o - xargs s.o Der cp Befehl wird erst ausgeführt, wenn das "find .. | xargs .." Kommando vollständig abgearbeitet ist, also genau einmal. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de