Frage zu sed

S

steffi.kom

Grünschnabel
hi,

ich habe folgenden code:

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.
 
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
 
Ich habe es dann einfach so gelöst:

Code:
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
 

Ähnliche Themen

Hilfe für ein shell script

Samba 3.6.25 - OpenLDAP Setup

Keine grafische Oberfläche (Debian Installation)

Wie komme ich an den Inhalt des Inhalts einer Variable?

SED und TCPDUMP

Zurück
Oben