1

特定のタグ ブロック間のすべてのコンテンツを (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>

何か案は?

4

2 に答える 2

3

awk を使用します。

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

xml ファイルを操作する場合、最適な方法は xml ツールを使用することです。

XMLStarlet :

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

libxml2からの xmllint :

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