sed + 添加注释到 IP - 仅当 IP 完全匹配时

sed + 添加注释到 IP - 仅当 IP 完全匹配时

我的目标是使用 sed 将“#”添加到 IP,

但前提是IP完全匹配!!!

例如:

 sed 's/72.16.90.12/#72.16.90.12/g' /etc/hosts



 more /etc/hosts

 72.16.90.121   host1
 172.16.90.12   host2

下面的 sed 命令将在主机文件中的 IP 地址中添加“#”,尽管它们不匹配

我需要在 sed 语法中添加什么,以便仅在 IP 完全相同的情况下添加“#”?

答案1

你可以添加单词边界,并更改.\.(以便匹配文字句点,而不是任何字符)

sed 's/\b72\.16\.90\.12\b/#&/g'

另请注意,使用 来&保存必须重复替换。在这种情况下,您可能也不需要g修饰符,因为您的主机地址是每行一个。

答案2

IP=10.10.10.10   # change to yours
sed -i -e "/${IP}/s/${IP}/#${IP}/" /etc/hosts

相关内容