3

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

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 来执行此操作而不删除任何其他评论吗?

4

1 回答 1

3

这可能对您有用(GNU sed):

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

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

于 2013-08-01T18:48:53.643 回答