如何使用sed更改匹配行中的最后一个字符?
例如:/ 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.....
我怎样才能改变网关的主机八位字节? 我有很多机器来做这件事,每个人都在不同的networking,但网关的八位字节总是相同的。
如果你的网关是150.0.3.254
你可以这样做:
sed -i -E 's/([ \t]+gateway[ \t])+[0-9.]+/\1150.0.3.254/' /etc/network/interfaces
让我解释它是如何工作的:
-i
– >手段replace文件 -E
– >使用扩展正则expression式,避免转义特殊字符(
如\(
's/<PATTERN>/<REPLACEMENT>/' -> the
s`表示将模式replace为replacemnet [ \t]+
– >空格或制表符一次或多次出现。 [0-9.]+
– >从0到9的数字,点出现一次或多次(对于ip) (PATTERN) \1
– >里面()
的模式存储为组1 \1
,所以它将用于replace(在这种情况下,空格或制表符+“网关”+空格或制表符) 150.0.3.254
– >是所需的网关 最好的祝福