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