Sed附加线

时间:2012-03-03 02:54:04

标签: linux sed

sed是否有命令在匹配的行之后追加一行?我试着四处寻找,但结果有点混乱。

基本上我希望它匹配

#address=/doubleclick.net/127.0.0.1

并在其下方添加一行

#address=/doubleclick.net/127.0.0.1

address=/anotherurl/ipaddress

这可能吗?

2 个答案:

答案 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