簡體   English   中英

sed - 匹配多行並在匹配上方插入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM