这个问题已经是discussed here,但我注意到最流行的答案实际上是错误的,并且由于该页面仍然在谷歌中弹出#1,我认为这是有道理的评论。我不能在原来的讨论中发表评论,因为我的声誉太低,所以如果管理员认为它应该移到那里,请这样做,不要让我太难过)使用sed删除html评论标签
因此,我们要删除所有内容,这是由HTML注释标记表示
This is how my text (html) file looks like
最投票回答表明下面的代码
#! /bin/sed -f
# Delete HTML comments
# i.e. everything between
# by Stewart Ravenhall
//!{
N
ba
}
s///
虽然它在简单的情况下,当另一个评论开始在同一线路出现故障,其中前一个结束。例如,应用上述脚本之后的输入
,会给
这意味着只有第一评论将被删除。原因是在应用替换命令后,代码不检查缓冲区是否也有下一个注释的开始标记。
分辨率这个问题是修改代码,这样
#! /bin/sed -f
:x
//!{
N
ba
}
s///
bx
,或者在很短的符号
cat file.html | sed ':x;//!{N;ba};s///;bx'
我想改正这个脚本是很重要的,因为它是上市上seder's grab bag
一点点更简洁和非常优雅的解决方案建议Brian Clements(我已经修改了一点)
cat file.html | sed ':a;s///g;/