在你抓取到的html文件,如果想查找并选出一个标签间的内容的话,就需要使用多行匹配。这一点上grep不能提供此功能。所以就可以使用sed的多行匹配功能。
比如,你想选出
<html>
<body>
<div class="info">
......
......
</div>
</body>
</html>
两个div标签之间的内容。
可以用下面的方法
$ sed -n -e '/<div>/p' -e '/<div class=\"info\">/,/<\/div>/p' *.html > all.html
以上方法参考自此文章
http://www.fwolf.com/blog/post/346,这篇文章写得很好。
以下内容均引自上述文章。
Update @ 2007-12-14
在和bxy讨论的过程中,又发现sed的另外一种用途,从html或xml中按照tag对应关系,筛选打印出指定的tag内容,使用了正则中的p命令,好像默认就没有“不能处理多行内容”以及“贪婪性”的问题,很好用,很强大:
$ sed -n -e '/<title>/p' -e '/<text /,/<\/text>/p' from.xml
注意/<\/text>/不在同一行的时候才好用,不然会匹配到下一个实例出现的位置作为结束边界。
|----------------------------------------------------------------------------------------|
版权声明 版权所有 @zhyiwww
引用请注明来源 http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2009-10-29 18:10
zhyiwww 阅读(8431)
评论(0) 编辑 收藏 所属分类:
linux