Codesnippet Änderungen einer Zeile

Gast #5785169
Lesenswert?

Hallo,
ich suche ein Code snippet um eine Zeile in der DHCP.conf per bash 
script zu ändern.

1
interface tun0                                                            
2
        static ip_address=10.8.8.11/24                                    
3
        static routers=192.168.178.1                                      
4
        static domain_name_servers=127.0.0.1

Nun möchte ich die Zeile
1
                                           
2
        static ip_address=10.8.8.11/24

Ändern per bash Kommando.

Kann mir jdm. helfen??

Danke
Gast #5785312
Lesenswert?

Kann ich auch irgendwie eine Wildcard für die IP Adresse setzen??? 
Sprich
1
sed -i -e 's/static ip_address=10.*\/24/static ip_address=10.8.8.8\/24/' <file>

 So das es für alle IP Adressen geht die mit 10. Anfangen???



Danke
Gast #5790275
Lesenswert?

Du hast doch oben Stichworte und einen vollständigen Befehl für deine 
vorherige Frage erhalten. Anstatt jetzt häppchenweise alle deine 
Probleme lösen zu lassen, könntest du dich einlesen und diese dann 
selber beheben?

"sed whitespace" wäre evtl. ein passender google-Begriff
Gast #5792780
Lesenswert?

Das Problem ist doch eher, dass nur die Zeile eines bestimmten 
Interfaces geändert werden soll und nicht alle.  Sowas mach ich mit awk:
1
# awk '/^interface/ {i=$2} /ip_address=/&&i=="tun0" {print"\tstatic ip_address=10.8.8.8/24";next} {print}' dhcp.conf >dhcp.conf.new && mv dhcp.conf.new dhcp.conf

In einem Script würde man es etwas übersichtlicher schreiben, z.B. so:
1
f=dhcp.conf
2
awk -v dev=tun0 -v ip=10.8.8.8/24 '
3
    /^interface/            { i=$2 }
4
    /ip_address=/ && i==dev { print"\tstatic ip_address="ip; next }
5
                            { print }
6
' $f >$f.new && mv $f.new $f

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren