[sed] sed und shellscripts

16/09/2009 - 16:30 von Tobias Kretschmer | Report spam
Hallihallo,

ich plane für ein tàgliches Snapshot das aktuelle Datum ans Ende der
Zeile BUILDDIR zu schreiben.

Hier Auszüge des Makefiles:

BUILDDIR:=/home/.../Test_160909 <-- Das Datum soll geàndert werden.

Das Problem ist nur das der Befehl

sed -e "s#\(BUILDDIR:=\).*#\1\$DATE#g" < Makefile_FINAL > Makefile

immernoch nicht das gewünschte Ergebnis bringt sondern
danach BUILDDIR=$DATE im Makefile steht obwohl in einschlàgigen Foren
die Tatsache rüberkommt das man Sonderzeichen escapen soll, aber ohne
Erfolg. Desweitern führt auch kein

sed -e 's#\(BUILDDIR:=\).*#\1\'$DATE'#g' < Makefile_FINAL > Makefile

zum Erfolg.
Mit

sed -e 's/\(BUILDDIR:=\).*/\1\$DATE/g' < Makefile_FINAL > Makefile

sieht nicht anders aus.

Was mache ich falsch?


Gruß
Tobias
 

Lesen sie die antworten

#1 Franz Urbanski
16/09/2009 - 16:45 | Warnen spam
Tobias Kretschmer schrieb:
Hallihallo,

ich plane für ein tàgliches Snapshot das aktuelle Datum ans Ende der
Zeile BUILDDIR zu schreiben.

Hier Auszüge des Makefiles:

BUILDDIR:=/home/.../Test_160909 <-- Das Datum soll geàndert werden.

Das Problem ist nur das der Befehl

sed -e "s#\(BUILDDIR:=\).*#\1\$DATE#g" < Makefile_FINAL > Makefile

immernoch nicht das gewünschte Ergebnis bringt sondern
danach BUILDDIR=$DATE im Makefile steht obwohl in einschlàgigen Foren
die Tatsache rüberkommt das man Sonderzeichen escapen soll, aber ohne
Erfolg. Desweitern führt auch kein

sed -e 's#\(BUILDDIR:=\).*#\1\'$DATE'#g' < Makefile_FINAL > Makefile

zum Erfolg.
Mit

sed -e 's/\(BUILDDIR:=\).*/\1\$DATE/g' < Makefile_FINAL > Makefile

sieht nicht anders aus.

Was mache ich falsch?



Hallo,

wenn Du das ganze mal mit "echo" statt "sed -e" durchlaufen làßt,
also z.B. mit folgendem Script:

#!/bin/sh
DATE 09-09-16
echo "s#\(BUILDDIR:=\).*#\1\$DATE#g"
echo 's#\(BUILDDIR:=\).*#\1\'$DATE'#g'
echo 's/\(BUILDDIR:=\).*/\1\$DATE/g'

Dann siehst Du den Unterschied selbst:

s#\(BUILDDIR:=\).*#\1$DATE#g
s#\(BUILDDIR:=\).*#\1\2009-09-16#g
s/\(BUILDDIR:=\).*/\1\$DATE/g

Nur in der zweiten Zeile wird tatsàchlich das Datum
eingetragen, sonst sieht sed $DATE.


-Franz

Ähnliche fragen