在你抓取到的html文件,如果想查找并選出一個(gè)標(biāo)簽間的內(nèi)容的話,就需要使用多行匹配。這一點(diǎn)上grep不能提供此功能。所以就可以使用sed的多行匹配功能。
比如,你想選出
<html>
<body>
<div class="info">
......
......
</div>
</body>
</html>
兩個(gè)div標(biāo)簽之間的內(nèi)容。
可以用下面的方法
$ sed -n -e '/<div>/p' -e '/<div class=\"info\">/,/<\/div>/p' *.html > all.html
以上方法參考自此文章
http://www.fwolf.com/blog/post/346,這篇文章寫(xiě)得很好。
以下內(nèi)容均引自上述文章。
Update @ 2007-12-14
在和bxy討論的過(guò)程中,又發(fā)現(xiàn)sed的另外一種用途,從html或xml中按照tag對(duì)應(yīng)關(guān)系,篩選打印出指定的tag內(nèi)容,使用了正則中的p命令,好像默認(rèn)就沒(méi)有“不能處理多行內(nèi)容”以及“貪婪性”的問(wèn)題,很好用,很強(qiáng)大:
$ sed -n -e '/<title>/p' -e '/<text /,/<\/text>/p' from.xml
注意/<\/text>/不在同一行的時(shí)候才好用,不然會(huì)匹配到下一個(gè)實(shí)例出現(xiàn)的位置作為結(jié)束邊界。
|----------------------------------------------------------------------------------------|
版權(quán)聲明 版權(quán)所有 @zhyiwww
引用請(qǐng)注明來(lái)源 http://m.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2009-10-29 18:10
zhyiwww 閱讀(8444)
評(píng)論(0) 編輯 收藏 所屬分類:
linux