sed Problem

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Boity
Beiträge: 799
Registriert: 15.05.2009 13:59:19

sed Problem

Beitrag von Boity » 03.11.2014 13:16:11

Hi,

ich würde gerne in einer Datei den aktuellen Hostnamen einfügen lassen mittels "sed".

So funktioniert das schon :

sed s/server01/server-01A/g server.conf


Jetzt muss aber server-01A den aktuellen Hostname enthalten, also aus einer Variable.

So klappt das aber irgendwie nicht, wird nichts ersetzt :

Code: Alles auswählen

whostname= hostname -A 

sed s/server-01/'$newhostname'/g server.conf
Wo liegt der Fehler? :(

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

Re: sed Problem

Beitrag von tobo » 03.11.2014 13:31:44

Damit die Variable von der Shell bereits expandiert werden kann, sollte der komplette Ersetzungsaudruck in doppelten Anführungsstrichen stehen.

Code: Alles auswählen

sed "s/server-01/$newhostname/g" server.conf
Und wenn es direkt in der Datei ersetzt werden soll, dann noch -i als Parameter von sed.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: sed Problem

Beitrag von ThorstenS » 03.11.2014 14:01:10

Ein Tipp für dich für zukünftiges Herausforderungen:
Wenn du an einem solchen Problem arbeitest, mach dir nen Script wie unten angegeben. Öffne zwei Terminals, die du übereinander positionierst. Oben hast du das file im vim offen, unten führst du es aus. (Oder du nimmst geany, das bietet dir auch eine eingebaute console)

Code: Alles auswählen

#!/bin/bash
set -e
set -x
_ohostname=server-01
_whostname=$(hostname -A)
_file=server.conf
< $_file sed "s/$_ohostname/$_whostname/g"
Wenn das Script tut, was es soll, ersetzt du < $_file sed "s/$_ohostname/$_whostname/g" durch sed -i "s/$_ohostname/$_whostname/g" $_file und bist fertig.

Boity
Beiträge: 799
Registriert: 15.05.2009 13:59:19

Re: sed Problem

Beitrag von Boity » 03.11.2014 15:58:14

ThorstenS hat geschrieben:Ein Tipp für dich für zukünftiges Herausforderungen:
Wenn du an einem solchen Problem arbeitest, mach dir nen Script wie unten angegeben. Öffne zwei Terminals, die du übereinander positionierst. Oben hast du das file im vim offen, unten führst du es aus. (Oder du nimmst geany, das bietet dir auch eine eingebaute console)

Code: Alles auswählen

#!/bin/bash
set -e
set -x
_ohostname=server-01
_whostname=$(hostname -A)
_file=server.conf
< $_file sed "s/$_ohostname/$_whostname/g"
Wenn das Script tut, was es soll, ersetzt du < $_file sed "s/$_ohostname/$_whostname/g" durch sed -i "s/$_ohostname/$_whostname/g" $_file und bist fertig.
Best!

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: AW: sed Problem

Beitrag von scientific » 05.11.2014 05:57:04

Vim kann auch das geöffnete Skript ausführen...
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten