zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0

在你抓取到的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

只有注册用户登录后才能发表评论。


网站导航: