PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu sed



steffi.kom
26.07.2005, 16:28
hi,

ich habe folgenden code:


echo "Ersetze Platzhalter <RUNHOME>"
sed -e 's/<RUNHOME>/'${CDF_RUNHOME}'/' $SCRIPT_PATH/start-stop-script > $SCRIPT_PATH/start-stop-script_2
mv $SCRIPT_PATH/start-stop-script_2 $SCRIPT_PATH/start-stop-script

<RUNHOME> ist in einer Datei, was durch die vordefinierte Variable CDF_RUNHOME ersetzt werden soll.

Bei allen anderen Ersetzungen funktioniert es, nur bei den <PLATZHALTERN>, die Verzeichnisse sind (also <RUNHOME> = /opt/ordner/test) geht es nicht.

Habe es schon mit \ versucht, aber das funktioniert leider nicht.

hmhweb
29.07.2005, 13:47
Hallo,

stimmt, mit / in Pfadnamen ist schwierig. Tausch einfach die Trennzeichen / im sed-Kommando aus, also so:

sed -e "s#<RUNHOME>#${CDF_HOME}#" filexyz

oder

sed -e s#\<RUNHOME\>#${CDF_HOME}# filexyz

Das waren also mehrere Probleme: die < und > sind ja Sonderzeichen in der shell (deshalb \< oder " ), die ' blocken die Variablenersetzung (deshalb " oder keins) und die / des Pfades in der Variablen waren gleich den Trennzeichen :)

hmh

steffi.kom
17.08.2005, 10:00
Ich habe es dann einfach so gelöst:


echo "Replace Placeholder <RUNHOME>"
CDF_RUNHOME2=$(echo $CDF_RUNHOME | sed 's/\//\\\//g')
sed -e 's/<RUNHOME>/'$CDF_RUNHOME2'/' $SCRIPT_PATH/start-stop-script > $SCRIPT_PATH/start-stop-script_2
mv $SCRIPT_PATH/start-stop-script_2 $SCRIPT_PATH/start-stop-script