如何(e)grep XML某些标签内容?

时间:2012-05-23 06:39:09

标签: xml regex grep

我如何(e)grep特定标记块之间的所有内容?

假设下面的输入文件,我想得到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>

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用awk:

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

答案 1 :(得分:0)

使用xml文件时,最好的方法是使用xml工具。

XMLStarlet

xmlstarlet sel -t -c '//B' file.xml
来自libxml2 xmllint:

xmllint --xpath '//B' file.xml