我有一个配置文件,可能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执行此操作而不删除任何其他注释吗?
答案 0 :(得分:3)
这可能适合你(GNU sed):
sed '/^\s*<!--/!b;N;/<task>/s/.*\n//;T;:a;n;/^\s*-->/!ba;d' file
这会查找以评论开头的行。然后读入下一行,除非下一行包含它留下的<task>
标记。如果下一行确实包含<task>
标记,则删除第一行,然后打印后续行,直到结束注释标记然后删除。