2016-08-17 77 views
0

我有一個xml文件,我需要取消註釋一行。 我正在通過sed命令執行此操作。如何結合sed搜索一個模式並刪除多個模式

<!-- <file file="${result.file}"/> --> 

我使用的命令

sed -i '/file="${result.file}/s/<!--//' file.xml 
sed -i '/file="${result.file}/s/-->//' file.xml 

這工作,但我想我如何結合這些命令只有一個SED命令替換。

+0

我建議使用XML/HTML解析器(xmllint,xmlstarlet ...)你可以重寫你的Q值。 – Cyrus

回答

2

它應該是:

sed 's#<!-- \(<file file="${result.file}"/>\) -->#\1#' file 

我捕捉評論的內容爲捕獲組。在替換模式中,我只是輸出該匹配組的內容並省略註釋開始,註釋結束

+0

但這是更有效的解決方案。祝你們好運。 – shellter

+0

sed:-e表達式#1,字符51:未知選項到's' –

+0

@MohitArora Ups,對不起。我錯過了在xml標籤中轉義'/'。在這種情況下'#'可能是一個更好的分隔符。改變了。 – hek2mgl

1

您可以鏈接多個sed命令,由; char分隔。因此,作爲

sed -i '/file="${result.file}/s/<!--// ; /file="${result.file}/s/-->//' file.xml 

IHTH