[英]sed - matching multiple lines and insert above the match
我有一個看起來像這樣的文件
#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>
請評論你回答所以我可以學習,希望不需要問一個后續問題
謝謝 !
sed '/^##* END$/i\
# user login\
#############################################\
\
server.user=$USER\
server.pswd=$PASSWD\
\
\
#############################################' input
這利用了以下事實:END部分的標題塊只有一行,並且與插入塊的標題相同,因此我們重新使用END部分的第一行作為標題的第一行新部分,並為END塊頭寫一個新的第一行。 i
命令告訴sed在打印緩沖區之前插入文本,並且轉義的換行符允許我們插入多行文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.