sed正则表达式匹配并替换任何最后一位数字

时间:2018-08-21 17:44:12

标签: regex sed

我有很多包含以下ipaddress的文件,并且我想替换ip的最后一位,看起来我在努力提出正确的正则表达式

file1

IPADDR=10.30.2.26
NETMASK=255.255.0.0
GATEWAY=10.30.0.1

我想使用sed将10.30.2.26替换为10.30.2.27,但由于某种原因我想念一些东西,因此尝试了以下操作。

我有很多文件要替换,最后一位可能是任何数字。

我尝试过sed 's/[^IPADDR].$/7/g' file1

我如何匹配^IPADDR{anything}$之间的任何内容?

2 个答案:

答案 0 :(得分:2)

在正则表达式中,[^IPADDR]character class,用于搜索除方括号中列出的字符以外的任何字符。我不确定那不是您想要的。

您可以改用地址来查找以IPADDR/^IPADDR/)开头的行,并在其上应用替换命令:

sed '/^IPADDR/s/[0-9]$/7/' file

答案 1 :(得分:2)

您可以使用以下命令:

sed -r 's/(^IPADDR=[0-9.]+)([0-9]$)/\17/g' file

打印:

IPADDR=10.30.2.27
NETMASK=255.255.0.0
GATEWAY=10.30.0.1