sed从文件中取消注释specpic xml注释

时间:2013-08-01 14:12:06

标签: bash sed

我有一个配置文件,可能OR也没有注释掉任务。如果任务被评论,我想“取消注释”!

sed  -i '/<!--/d; /-->/d testfile

到目前为止,我有这个,但它删除了文件中的所有注释。

<!--Comment at the top of the file which should not be removed

-->

  <!--
  <task>

  <tag>
  <tag1>keep this content </tag1>
  </tag>

  </task>
-->

我只想删除任务标记的注释,这些注释在文件中看起来与上面一样(注释不在同一行),但保留内容。我可以使用sed执行此操作而不删除任何其他注释吗?

1 个答案:

答案 0 :(得分:3)

这可能适合你(GNU sed):

sed '/^\s*<!--/!b;N;/<task>/s/.*\n//;T;:a;n;/^\s*-->/!ba;d' file

这会查找以评论开头的行。然后读入下一行,除非下一行包含它留下的<task>标记。如果下一行确实包含<task>标记,则删除第一行,然后打印后续行,直到结束注释标记然后删除。