Zen*_*net 7 regex sed html-parsing
This is how my text (html) file looks like
<!--
| |
| This is a dummy comment |
| please delete me |
| asap |
| |
________________________________
| -->
this is another line
in this long dummy html file...
please do not delete me
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用sed删除评论:
cat file.html | sed 's/.*<!--\(.*\)-->.*//g'
Run Code Online (Sandbox Code Playgroud)
它不起作用:(我做错了什么?
非常感谢您的帮助!
Bri*_*nts 11
patrickmdnet有正确答案.这是使用扩展正则表达式的一行:
cat file.html | sed -e :a -re 's/<!--.*?-->//g;/<!--/N;//ba'
Run Code Online (Sandbox Code Playgroud)
这是了解更多关于sed的好资源.这个sed是单行#92的改编
http://www.catonmat.net/blog/sed-one-liners-explained-part-three/
原始尝试的一个问题是您的正则表达式只处理完全在一行上的注释.此外,前导和尾随".*"将删除非评论文本.
您最好使用现有代码而不是自己编写代码.
http://sed.sourceforge.net/grabbag/scripts/strip_html_comments.sed
#! /bin/sed -f
# Delete HTML comments
# i.e. everything between <!-- and -->
# by Stewart Ravenhall <stewart.ravenhall@ukonline.co.uk>
/<!--/!b
:a
/-->/!{
N
ba
}
s/<!--.*-->//
Run Code Online (Sandbox Code Playgroud)
(来自http://sed.sourceforge.net/grabbag/scripts/)
有关使用perl模块删除HTML注释的各种方法,请参阅此链接(使用Regexp :: Common,HTML :: Parser或File :: Comments.)我确信有使用其他实用程序的方法.
http://www.perlmonks.org/?node_id=500603