zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0

          在你抓取到的html文件,如果想查找并選出一個標(biāo)簽間的內(nèi)容的話,就需要使用多行匹配。這一點上grep不能提供此功能。所以就可以使用sed的多行匹配功能。
          比如,你想選出
          <html>
          <body>
          <div class="info">
          ......
          ......
          </div>

          </body>
          </html>

          兩個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,這篇文章寫得很好。

          以下內(nèi)容均引自上述文章。

          Update @ 2007-12-14

          在和bxy討論的過程中,又發(fā)現(xiàn)sed的另外一種用途,從html或xml中按照tag對應(yīng)關(guān)系,篩選打印出指定的tag內(nèi)容,使用了正則中的p命令,好像默認(rèn)就沒有“不能處理多行內(nèi)容”以及“貪婪性”的問題,很好用,很強大:

              $ sed -n -e '/<title>/p' -e '/<text /,/<\/text>/p' from.xml

          注意/<\/text>/不在同一行的時候才好用,不然會匹配到下一個實例出現(xiàn)的位置作為結(jié)束邊界。






          |----------------------------------------------------------------------------------------|
                                     版權(quán)聲明  版權(quán)所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2009-10-29 18:10 zhyiwww 閱讀(8445) 評論(0)  編輯  收藏 所屬分類: linux
          主站蜘蛛池模板: 积石山| 永吉县| 夏河县| 丰顺县| 奉贤区| 即墨市| 河南省| 新邵县| 宜阳县| 宁安市| 宁晋县| 龙口市| 凤城市| 峨边| 阳朔县| 高青县| 涿州市| 汉源县| 长子县| 南充市| 泰安市| 马龙县| 竹北市| 夏津县| 台山市| 安多县| 太仆寺旗| 正安县| 延川县| 那曲县| 香港| 增城市| 元阳县| 江达县| 昭觉县| 万源市| 营山县| 霞浦县| 临西县| 富民县| 信阳市|