Permalänk
Medlem

Linux regex replace med sed

Jag behöver ändra i ett gäng config-filer och försöker göra detta med ett script. Men hur gör jag för att byta ut porten i följande exempel:
<Server port="8006" shutdown="SHUTDOWN">

Jag har provat: sed -r 's/port="(\d{4})"\sshutdown/\1NyPort/' men får inte till det.

Permalänk
Medlem

Har inte så jag kan testa just nu, men kan ju tycka att detta borde funka
sed "s/\d{4}/1234/" -i ./minfil

Permalänk
Medlem

@timerx: tack men jag har många portar i config-filen, jag vill bara ändra den som har ordet "shutdown" efter

Permalänk
Medlem

@burton666:

sed 's/port="[^"]\+"\s\+shutdown/port="12345" shutdown/'

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Medlem

@burton666:

Testa: Byt 8006 mot 1111

sed '/Server port="8006"/s/8006/1111/g' filnamn

eller ändra direkt i filen med:

sed -i '/Server port="8006"/s/8006/1111/g' filnamn