Hallo,
Rainer Ellinger <[EMAIL PROTECTED]> schrieb am Sat, 12 Oct 2002
13:17:00 +0200::
> Hans Gerber schrieb:
> > Verstehe ich richtig, dass bei 'sed' immer ganze Zeilen ersetzt
> > werden nicht einzelne strings ?
>
> Nein, sed arbeitet zeilenweise. Innerhalb der Zeile ist Beliebiges
> m�glich.
>
> > wie kriege ich denn jetzt ..."first"... in ..."last"... ?
>
> Mit Klammerungen. Ein praktisches Beispiel:
>
> Dateien des Musters datei-AB01.htm sollen nach liste-01-AB.html
> umbenannt werden.
>
> ls -d *.htm | \
> sed 's/datei-\(..\)\([0-9]*\)\.htm/mv & liste-\2-\1.html/' | sh
>
> Vereinfacht (ohne die l�stigen Escapes) passiert folgendes:
> Suche: datei-(..)([0-9]*).htm und ersetze durch: mv & liste-\2-\1.html
Mein 1. Problem scheint etwas mit den escapes zu tun zu haben.
----schnipp---
#!/bin/bash
foo1="DOCUMENT_ROOT_old"
foo2="DOCUMENT_ROOT_new"
for f in index.php
do
if grep "$foo1" "$f"
then
mv "$f" "$f.bak"
if sed -e 's/'"$foo1"'/'"$foo2"'/g' "$f.bak" >"$f"
then echo "Treffer"
else cp "$f.bak" "$f"
fi
else
echo "none"
fi
done
----schnapp----
So wie oben geht es jetzt, aber sobald ich das '$' Sonderzeichen in foo1
mit reinnehme ist Ende: foo1=$DOCUMENT_ROOT_old. Dann schnmeisst das
Skript die Fehlermeldung:
"sed: -e expression #1, char 5: No previous regular expression".
Dich es in meinem konkreten Fall nicht ben�tige, ist es nicht so
wichtig, aber trotzdem w�rde mich mal interessieren, wie ich das l�sen
kann.
2. Problem
Die betroffenen Dateien index.php sind in bis zu dreifacher Tiefe in
verschiedenen Unterverzeichnissen. Mit find ./ -name index.php kann ich
in der shell wunderbar alle Dateien finden, aber wie kriege ich das in
das obige Skript eingebaut. was ich erreichen m�chte ist:
for all in find ./ -name index.php mache ersetzung
Ciao,
Hans
<der soeben ein gebrauchtes shell-programmierung buch bestellt hat>
--
H�ufig 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)