sed in Verbindung mit pwd in einem Makefile

D

daniel81

Hallo,

ich habe ein kleines Problem mit meinem Makefile:

ich möchte gerne im Makefile einen Platzhalter in einer Config-Text-Datei durch den aktuellen Verzeichnispfad ersetzen (quasi "pwd").
Dazu habe ich eine Datei config_default.txt in der der Platzhalter "DATADIR" steht. Im Makefile soll nun mit Hilfe des sed-Befehls aus der config_default.txt die Datei config.txt erstellt werden, in der statt DATADIR der Pfad zum aktuellen Verzeichnis steht.

meine Versuche sind leider alle kläglich gescheitert, aber zur näheren Erläuterung schreibe ich Euch mal einen auf:

Makefile:

sed "s/DATADIR/$(PWD)/g" $(PWD)/config_default.txt > $(PWD)/config.txt
Fehlermeldung: unkorrekte Optionen für s, da die durch $(PWD) erzeugten Slashs nicht escaped sind

nun meine Versuche diese Slashs zu escapen:
sed "s/DATADIR/$(sed 's/\//\\\//g' $(PWD))/g" $(PWD)/config_default.txt > $(PWD)config.txt
hier wird DATADIR einfach nur gelöscht, da der Ersetzungsstring anscheinend zu nichts ausgewertet wird

Weiß jemand Rat? ?(
 
Hallo daniel81

Versuchs mal so:
Code:
sed "s:DATADIR:$(PWD):g" $(PWD)/config_default.txt > $(PWD)/config.txt
So kommen dir die Slashes des Pfades nicht mit den Slashes von 'sed' in die Quere...
Das Trennzeichen in 'sed' kann problemlos durch ein anderes Zeichen ausgetauscht werden, insbesondere praktisch, wenn das standard Zeichen selber in der RegEx vorkommt...

Grüsse
d22
 

Ähnliche Themen

variable in sed verwenden

wie Regex für sed escapen?

marke durch datei mit sed ersetzen

sed / Variable in mehreren Dateien ersetzen

SED Hilfe

Zurück
Oben