2012-05-23 48 views
0

我該如何(e)grep在特定標記塊之間的所有內容?如何(e)爲某些標記內容grep XML?

假設下面的輸入文件,我想作爲輸出的B-標籤等等之間的所有字符:

<B><C>Test</C></B> 
<B>Test2</B> 

我嘗試以下grep來搜索與<B></B>標籤的所有內容的XML文件。

grep '<B>.*</B>' *.xml 

但它沒有工作。

對於以下輸入:

<A> 
<B> 
    <C>Test</C> 
</B> 
<D> 
</D> 
<B> 
    Test2 
</B> 
</A> 

任何想法?

+1

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html –

+0

正則表達式(特別是通配符)只能匹配一行。爲什麼不只是搜索,然後搜索。但是你也可能想要處理嵌套標籤。 – PauliL

+0

可能的重複[如何在文件中搜索多行模式?使用pcregrep](http://stackoverflow.com/questions/152708/how-can-i-search-for-a-multiline-pattern-in-a-file-use-pcregrep) –

回答

2

用AWK:

awk '/<B>/,/<\/B>/' 
0

在處理XML文件時,最好的辦法是使用XML工具。

XMLStarlet

xmlstarlet sel -t -c '//B' file.xml 

xmllint從libxml2

xmllint --xpath '//B' file.xml 
相關問題