1

我如何(e)grep某个标签块之间的所有内容?

假设下面的输入文件,我想将 B-tags 之间的所有字符作为输出,所以:

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

我尝试了以下 grep 来搜索所有包含<B>and</B>标记之间内容的 XML 文件。

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

但它没有用。

对于以下输入:

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

有任何想法吗?

4

2 回答 2

3

使用 awk:

awk '/<B>/,/<\/B>/'
于 2012-05-23T15:12:56.777 回答
0

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

XML小星星

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

来自libxml2的 xmllint :

xmllint --xpath '//B' file.xml
于 2015-01-27T12:16:38.750 回答