Re: viele dateien auf einmal modifizieren
Am Die, 15 Okt 2002 schrieb Hans Gerber:
> Rainer Ellinger <rainer@ellinger.de> schrieb am Sat, 12 Oct 2002
> 13:17:00 +0200::
>
> > Hans Gerber schrieb:
> > > wie kriege ich denn jetzt ..."first"... in ..."last"... ?
> > [sed für viele Dateien]
>
> Mein 1. Problem scheint etwas mit den escapes zu tun zu haben.
>
> ----schnipp---
> #!/bin/bash
> foo1="DOCUMENT_ROOT_old"
> foo2="DOCUMENT_ROOT_new"
> [...]
> if sed -e 's/'"$foo1"'/'"$foo2"'/g' "$f.bak" >"$f"
> [...]
>
> 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.
>
foo1="\$DOCUMENT_ROOT_old"
$foo1 wird ja später nur durch seinen Inhalt ersetzt => Du hast in
Deinem sed-Ausdruck das $ korrekt maskiert.
> 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
Viele Möglickeiten
z.B.
for i in `find ./ -name index.php`;do
#Ersetzung
done
Gruß
Christoph
--
Christoph Maurer - http://www.christophmaurer.de
mailto:christoph-maurer@gmx.de - Tux# 194235
Reply to: