PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen in sed



emoly
24.10.11, 12:47
Hallo,
ich habe noch einmal eine Frage zu sed:

Und zwar möchte ich ein File um eine Funktion ergänzen, die in einer Variablen abgespeichert ist und einen durchnummerierten Input durch einene Namen ersetzen, der auch in einer Variablen abgespeichert ist. Es kommt aber nur eine leere Datei heraus. Ich glaube es liegt an den falschen Anführungzeichen.
Hier ist mein Code:


sed -e "s#</label><!--Insert Functions before label-->#$function1</label><!--Insert Functions before label-->#" \
-e "s#VariableIn$port1#$var1#" template.xdd>/file.xdd

Vielen Dank für eure Hilfe.

emoly

marce
24.10.11, 12:53
Für's erste würde ich versuchen, die Variablen in ${}-Notation zu schreiben...

emoly
24.10.11, 13:29
das habe ich auch schon versucht.

Kann es sein, dass sed versucht, die eckigen Klammern zu interpretieren?

Wie kann ich es denn hinbekommen, dass er mir die Klammern nicht interpretiert, aber die Variable schon?

buzz768
24.10.11, 15:05
sed -e 's#</label><!--Insert Functions before label-->#'${function1}'</label><!--Insert Functions before label-->#' \
-e 's#VariableIn'${port1}'#'${var1}'#' template.xdd>file.xdd

emoly
24.10.11, 15:51
hey,
vielen Dank für den Code, aber auch der funktioniert nicht. Ich glaube das Problem sind die '&' in $functions1

Meine am besten bis jetzt funktionierende Lösung sieht so aus:


sed -e "s%</label><\!--Insert Functions before label-->% $function1 </label><!--Insert Functions before label-->%g" \
-e "s%VariableIn$port1%$var1%g" template.xdd>file.xdd

Das Problem hier aber ist, dass er das ganze öfter hinereinander einfügt und der Inhalt der function1 Variable zerrissen ist, jedes mal beim Kaufmanns-Und (&)...

Hat da jemand irgendeine Idee?

emoly
24.10.11, 16:01
Ah, ich habs, ich hab im vor die Kaufmanns-Unde jeweils einen backslash gemacht!

Danke für eure Hilfe!