我有一个看起来像这样的文件
#multi
#line
#comment
$var1=foo
#multi
#line
#comment
$var2=bar
#############################################
# END #
#############################################
使用sed(因为我已经在我的脚本的其他地方使用了sed,我宁愿保持一致)如何匹配“END”部分,即一个或多个注释标记后跟一个cament + space + END和然后在结束部分
之前添加以下行#############################################
# user login
#############################################
server.user=$USER
server.pswd=$PASSWD
<newline>
<newline>
请评论你回答所以我可以学习,希望不需要提出后续问题
谢谢!答案 0 :(得分:2)
sed '/^##* END$/i\
# user login\
#############################################\
\
server.user=$USER\
server.pswd=$PASSWD\
\
\
#############################################' input
这利用了以下事实:END部分的标题块只有一行,并且与插入块的标题相同,因此我们重新使用END部分的第一行作为第一行新部分的标题,并为END块标题写一个新的第一行。 i
命令告诉sed在打印缓冲区之前插入文本,转义的换行符允许我们插入多行文本。