如何使用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 – >是所需的网关 最好的祝福