如何组合sed搜索一个模式并删除多个模式

时间:2016-08-17 13:07:55

标签: xml unix sed

我有一个xml文件,我需要取消注释一行。 我通过sed命令这样做。

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

我使用命令

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

这有效但我在想如何组合这些命令并仅用一个sed命令替换。

2 个答案:

答案 0 :(得分:2)

应该是:

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

我正在将评论的内容捕获到捕获组中。在替换模式中,我只是输出该匹配组的内容并省略comment-start,comment-end

答案 1 :(得分:1)

您可以链接多个sed命令,以;字符分隔。所以你可以把你的Q重写为

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

IHTH