Wert eines Konfigschlüssels in einer Datei ändern

A

aspire_5652

Tripel-As
Ich weiß, dass man mit sed Strings in einer Datei suchen und ersetzen kann. Ich hab in einer Konfigurationsdatei zwei Konfigschlüssel namens: "FW_SERVICES_EXT_TCP" und "FW_SERVICES_EXT_UDP". an diese Schlüssel will ich Werte anhängen, unabhängig ob schon ein weiterer Wert vorhanden ist oder noch gar kein Wert vergeben ist. In jedem Fall sollte der Wert "8080" angefügt werden.
Bsp:
vorher > nachher
FW_SERVICES_EXT_TCP="ssh" > FW_SERVICES_EXT_TCP="ssh 8080"
FW_SERVICES_EXT_UDP="" > FW_SERVICES_EXT_UDP="8080"

Wie könnte man das umsetzen, damit es automatisiert in einem Shellscript Anwendung findet?
 
Zuletzt bearbeitet:
Hallo
Mit GNU sed direkt (Option -i)
Ungetestet
Code:
sed -ie 's/\(FW_SERVICES_EXT_\(TCP\|UDP\)="[^"]*\)["]/\1 8080"/' file
Ohne GNU sed musst du die Ausgabe erst im ein Temp-file schreiben und anschließend überkopieren.

Gruß Wolfgang
 
sehr schön, funktioniert tadellos, nur kann man das irgendwie abfangen, dass wenn der Wert "8080" schon enthalten ist, sed dann abbricht und nichts macht?
 
Ja, das geht auch.
Wenn die 8080 nur im Wert vorkommen kann...
Ungetestet
Code:
sed -ie '/8080/!s/\(FW_SERVICES_EXT_\(TCP\|UDP\)="[^"]*\)["]/\1 8080"/' file

Gruß Wolfgang
 
Zurück
Oben