How to using sed to change the last character from a match line ?
Exemple:
/etc/network/interfaces
auto eth0
iface eth0 inet static
address 150.0.3.50
netmask 255.255.255.0
network 150.0.3.0
gateway 150.0.3.6
auto eth.....
How can I change only the host octet of the gateway ? I've a lot of machines to do that and each one is in a different network, but the gateway's octet is always the same.
Best Answer
If your gateway is
150.0.3.254
You can do it this way:Let me explain how it works:
-i
-> Means replace the file-E
-> Use Extended regular expressions, avoids escape especial characters like(
to\(
's/<PATTERN>/<REPLACEMENT>/' -> the
s` means substitution for the pattern to the replacemnet[ \t]+
-> Space or Tab one or more occurrences.[0-9.]+
-> Numbers from 0 to 9 and dot one or more occurrences (for the ip)(PATTERN) \1
-> The pattern inside()
is stored as group 1\1
, so it will be used on the replacement (in this case spaces or tabs + "gateway" + spaces or tabs)150.0.3.254
-> Is the desired gatewayBest regards