![](https://seccdn.libravatar.org/avatar/7b33cb1e776e35b87edb8ef09f0c888f.jpg?s=120&d=mm&r=g)
Hallo, Am Fri, 09 Jan 2004, A.Loesch schrieb:
Für die einzelne Datei würde ich das so machen: sed -e 's/datei1.html\" class=\"submenu/&UndNochwas/g' datei1.html
Das Muster waere mir ein bisserl zu "ungenau"...
hier hab ich dann schon das erste Problem: ich will das wieder als datei1.html speicher, geht das anders als über eine 2. Datei und anschliessend umbenennen?
Nein.
Jetzt zu vielen Dateien: Meine erste Idee war in etwa so:
find *.html -type f | xargs sed -e 's/$1\" class=\"submenu/&UndNochwas/g' $1
1. Autsch. Das darf nicht laufen, es sei denn, du hast im aktuellen Verzeichnis Unterverzeichnisse mit "irgendwas.html" im Namen -- oder keine einzige Datei, die 'irgendwas.html' heisst. Denn find bekommt das *.html nie zu sehen, weil das die shell aufloest. Dich hat bisher wohl nur gerettet, dass du keine .html im aktuellen Verzeichnis hast, das *.html also von der shell zu nichts expandiert wird, find also ohne Pfad aufgerufen wird und dann sein Default nimmt und einfach im aktuellen Verzeichnis sucht. 2. Autsch. Wenn, dann musst du 'xargs -n 1' verwenden.
Problem (das sehen die Experten wahrscheinlich direkt :) ) sed löst das $1 nicht auf :(
1. sed loest $1 nie auf 2. die shell loest schon wg. den '' nicht auf 3. die shell ist bei der Konstruktion gar nicht beteiligt
Neuer Versuch:
find *.html -type f -exec sed -e 's/{}\" class=\"submenu/&UndNochwas/g' {} \;
gleiches Prolbem sed löst das nicht auf :(
Siehe 1. und 2. oben. ==== UNGETESTET! ==== for f in `find . -type f -name '*.html' -maxdepth 1`; do sed -e "/$f/s/\(.*a href=\"$f\" class=\"\)submenu\(\".*\)/\1submenuUndNochwas\2/g" \ "$f" > "$f.tmp" && mv -f "$f.tmp" "$f" done ==== -dnh -- 95: PGP-Keysigning-Party Kultiges Zusammensitzen und gemeinsames Murmeln magischer Zahlen. (Gert Döring)