Sed追加行

sed是否有一条命令在匹配的行之后附加一行? 我试着四处搜寻,但对结果有点困惑。

基本上我希望它匹配

#address=/doubleclick.net/127.0.0.1 

并在它下面添加一行

 #address=/doubleclick.net/127.0.0.1 address=/anotherurl/ipaddress 

这可能吗?

您可以在sed使用a (append)命令:

 $ 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提示符。

这可能适合你:

 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 

您可以在地址中使用任何您喜欢的分隔符,方法是预先设置\ ie \|...| 对于替代命令\是没有必要的。

如果你想要一个空行,然后匹配一些文本,使用:

 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