sed是否有命令在匹配的行之后追加一行?我试着四处寻找,但结果有点混乱。
基本上我希望它匹配
#address=/doubleclick.net/127.0.0.1
并在其下方添加一行
#address=/doubleclick.net/127.0.0.1
address=/anotherurl/ipaddress
这可能吗?
答案 0 :(得分:10)
您可以在a
中使用sed
(追加)命令:
$ sed -i '/^#address=\/doubleclick.net\/127.0.0.1$/a\
> address=/anotherurl/ipaddress' file.txt
或者您可以使用s
(替换)命令:
$ sed -i 's@^#address=/doubleclick.net/127.0.0.1$@&\naddress=/anotherurl/ipaddress@' file.txt
注意: $
和>
是bash提示。
答案 1 :(得分:0)
这可能对您有用:
echo "#address=/doubleclick.net/127.0.0.1"|
sed '\|#address=/doubleclick.net/127.0.0.1|a\address=/anotherurl/ipaddress'
#address=/doubleclick.net/127.0.0.1
address=/anotherurl/ipaddress
您可以在地址中使用您喜欢的任何分隔符,方法是在\
前加\|...|
作为替换命令,\
不是必需的。
如果你想要一个空行然后匹配一些文字,请使用:
echo "#address=/doubleclick.net/127.0.0.1"|
sed '\|#address=/doubleclick.net/127.0.0.1|a\\naddress=/anotherurl/ipaddress'
#address=/doubleclick.net/127.0.0.1
address=/anotherurl/ipaddress