0

我需要在 HOME_NET 前面的 suricata.yaml 文件中使用 sed 更改 IP 地址。

HOME_NET: "[172.20.16.25]"

我可以使用以下正则表达式来管理任何 IP 地址。

sed -i "s/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}/"$IP"/g"

问题是它会更改文件中的所有 IP 地址。我只是感兴趣的是前面的HOME_NET。

4

1 回答 1

1

sed -i "/^ *HOME_NET/s/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}/"$IP"/g"

详细说明一下:单行 sed 脚本由行匹配规则(在文档中称为地址)和要执行的操作(命令)组成。/^ *HOME_NET/部分是简单的行匹配规则,而部分s/../../g是替换命令。如果不指定行匹配规则,则匹配所有行。

试着man sed多学一点。

于 2016-12-28T14:47:33.727 回答