Wert in Datei mit Dateiinhalt ersetzen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Wert in Datei mit Dateiinhalt ersetzen

Beitrag von Quickly1971 » 28.04.2018 21:15:58

Hallo.
Ich bin echt am verzweifeln und bekomme es nicht hin. :(

Ich habe in dem Script sync.sh einen Wert den ich ersetzen möchte (VAR99). Diesen Wert möchte ich mit dem Inhalt einer Datei ersetzen, ca. 90 Zeilen.

Ich lese die Datei per cat ein... und dann bekomme ich es einfach nicht hin. :cry:

1. Ich lese ein:

Code: Alles auswählen

VAR1="$(cat /tmp/SyncPart)"
2. Sieht gut aus:

Code: Alles auswählen

echo "$VAR1"
3. Ich bekomme es NICHT gebacken. (Schreibe hier nur EINEN meiner hundert Versuche auf!)

Code: Alles auswählen

sed "s/VAR99/$"VAR1"/g" /root/sync.sh
Vielen Dank für Hilfe und Verständnis.
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Wert in Datei mit Dateiinhalt ersetzen

Beitrag von tobo » 28.04.2018 22:15:54

Das Problem sind dann wohl die Zeilenumbrüche im Ersetzungstext. Shellabhängig (z.B. bash, mksh) und ohne "#" (ansonsten die 3 "#" eindeutig ersetzen) in der Variablenersetzung:

Code: Alles auswählen

sed "s#VAR99#${VAR1//$'\n'/\\n}#g" /root/sync.sh
https://stackoverflow.com/questions/286 ... reserve-it

Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Re: Wert in Datei mit Dateiinhalt ersetzen

Beitrag von Quickly1971 » 30.04.2018 12:29:35

Das Problem sind dann wohl die Zeilenumbrüche im Ersetzungstext
Hmpf... ja, das ist es. Danke.
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wert in Datei mit Dateiinhalt ersetzen

Beitrag von Meillo » 03.05.2018 09:59:31

Mit awk (funktioniert mit allen Zeichen im Ersatztext):

Code: Alles auswählen

awk -v r="`cat /tmp/SyncPart`" '{gsub(/VAR99/, r); print}' /root/sync.sh
Use ed once in a while!

Antworten