【发布时间】:2016-12-07 17:58:00
【问题描述】:
我有问题。我想用sed将IP写入文件
newsource=1.2.3.4/24
sed -i 's/.*#source*/&\n'"$newsource"'/' file
$newsource 是一个 IP,它可以包含或不包含网络掩码 /24。现在sed 写入完整的IP 但不是/24。我该如何改变呢?
【问题讨论】:
我有问题。我想用sed将IP写入文件
newsource=1.2.3.4/24
sed -i 's/.*#source*/&\n'"$newsource"'/' file
$newsource 是一个 IP,它可以包含或不包含网络掩码 /24。现在sed 写入完整的IP 但不是/24。我该如何改变呢?
【问题讨论】:
这是因为您必须转义 /,或将 sed 分隔符更改为其他内容:
\/
newsource=1.2.3.4\/24
sed -i 's/.*#source*/&\n'"$newsource"'/' file
或
sed分隔符更改为~
newsource=1.2.3.4/24
sed -i 's~.*#source*~&\n'"$newsource"'~' file
分享和享受。
【讨论】:
试试:
sed -i 's|.*#source*|&\n'"${newsource}"'|' file
您可以使用 \ 来转义 /,但由于路径存储在变量中,因此使用不同的分隔符可能更容易。
【讨论】: