我如何(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>
有什么想法吗?
答案 0 :(得分:3)
使用awk:
awk '/<B>/,/<\/B>/'
答案 1 :(得分:0)
使用xml文件时,最好的方法是使用xml工具。
xmlstarlet sel -t -c '//B' file.xml
来自libxml2的xmllint --xpath '//B' file.xml