如果某個字符串存在,我需要將一個<!--
添加到行的開頭,並將-->
添加到xml文件中每行的行尾。因此,舉例來說,如果BlueCard
是我想匹配的字符串和文件看起來像這樣目前:如何使用bash在文件中追加包含匹配模式的行的開頭和結尾?
RedCard
BlueCard
GreenCard
我希望新的文件看起來像:
RedCard
<!--BlueCard-->
GreenCard
怎麼可以這樣做?
如果某個字符串存在,我需要將一個<!--
添加到行的開頭,並將-->
添加到xml文件中每行的行尾。因此,舉例來說,如果BlueCard
是我想匹配的字符串和文件看起來像這樣目前:如何使用bash在文件中追加包含匹配模式的行的開頭和結尾?
RedCard
BlueCard
GreenCard
我希望新的文件看起來像:
RedCard
<!--BlueCard-->
GreenCard
怎麼可以這樣做?
使用sed:
sed 's/.*BlueCard.*/<!--&-->/' file
您也可以匹配模式,然後匹配所有行申請替代(s
)。
sed '/BlueCard/ s/.*/<!--&-->/' test
&
這選擇由.*
嘗試在AWK過一次匹配的一切。
awk '/BlueCard/{print "<!--" $0 "-->";next} 1' Input_file
因此,如果找到字符串BlueCard,然後用該行打印註釋,則使用next將不會跳過所有其他語句。使用1將打印除了BlueCard的行之外的所有內容,因爲它已經由條件本身處理。
解決方案2:在這裏使用awk的子工具。
awk '{sub(/BlueCard/,"<!--&-->")} 1' Input_file
只需將字符串BlueCard替換爲註釋並打印所有內容即可。
謝謝!究竟是我想要的 –
有沒有一種方法來做泥漿;每個文件都要進行三次搜索?假設我也想用#號在RedCard上添加行,我可以一次完成嗎? –
也許'sed's /.* \(Blue \ | Red \)Card。*/ /'file'? – potong