【问题标题】:sed uncomment specfic xml comments out of a filesed 从文件中取消注释特定的 xml 注释
【发布时间】:2013-08-01 14:12:06
【问题描述】:

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

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

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

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

-->

  <!--
  <task>

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

  </task>
-->

我只想删除文件中与上面类似的任务标签的 cmets(注释不会在同一行),但保留其间的内容。我可以在不删除任何其他 cmets 的情况下使用 sed 来执行此操作吗?

【问题讨论】:

标签: bash sed


【解决方案1】:

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

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

这会查找以 cmets 开头的行。然后读入下一行,除非下一行包含&lt;task&gt; 标签,否则它会保留它们。如果下一行确实包含&lt;task&gt; 标签,它会删除第一行,然后打印以下行,直到它删除的结束注释标签。

【讨论】:

  • 这太棒了!谢谢你:)
猜你喜欢
  • 2020-09-27
  • 2015-09-19
  • 2017-12-24
  • 1970-01-01
  • 2012-12-08
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多