Hej script&bash_freaks,
in vielen (html-)Files sollen die directories(pfade) verändert werden - wie /home/user/bsp/bier[=pfad-alt] nach wein[=pfad-neu].
Grundsätzlich kann ich das über eine for-Schleife laufen lassen, und ich dachte mit sed das Problem zu lösen. Aber ein Slash ist nicht opportun im (oneline-)sed-command. Also das läuft hier nicht:
for i in *; do sed -e \'s/pfad-alt/wein/g\' neu-file; done. Eine ähnliche Lösung über ein perl-script macht dieselben Fehler. Wo ist die Lösung (kann natürlich auch ein script sein)?
Danke. edico
Linux 15.070 Themen, 107.540 Beiträge
Hi
perl -p -i -e 's/bier/wein/g' *
Bye, Klaus
Oder wenn du es unbedingt mit sed machen willst:
for i in *; do
sed -es/bier/wein/ $i > blah;
mv blah $i;
done
K.
Hej Klaus,
nö- das is doch exakt dasselbe - bis auf die Option -e von sed. Das Perlscript ist das, von dem ich gesprochen habe.
Lass es mich konkreter machen:
Es ist schon so gemeint, dass der zu eliminierende string mit mehreren Slashes w/Directory bestückt ist. Also /usr/lib/xyz/abc/und-jetzt-file-name. Es geht nicht nur um einen alleinigen string! Dann, lieber Freund, alles klaro. Dabei handelt es sich innerhalb der HTML-Files um Grafik-Pfade (was an sich keine Rolle spielt, nur jetzt der näheren Erklärung dient):
Wenn ich - gleich ob bei perl oder sed - die Pfade (logischerweise) mit den Slashes eingebe, meckern die scripte! Also, da ist meit perl und sed Sense ... oder was und/oder welche Option übersehe ich?
That's my problem, sir!
Danke.edico
Du meinst, es geht um die /? Die musst du mit dem %-Zeichen maskieren, also so:
for i in *; do
sed 's%/usr/lib/xyz/wein%/bier%' $i > blah;
mv blah $i;
done
Dann wird /usr/lib/xyz/wein durch /bier ersetzt. Wolltest du so etwas?
Klaus
Hej Klaus,
ja.That's it.
Danke.edico
