私は通常、大きなXMLファイルを処理し、grep特定の統計を確認するために単語数をカウントします。
widgetたとえば、次の方法で1つのxmlファイルに少なくとも5つのインスタンスがあることを確認したいと思います。
cat test.xml | grep -ic widget
さらに、次のように表示される行をログに記録できるようにしたいだけですwidget。
cat test.xml | grep -i widget > ~/log.txt
ただし、私が本当に必要とする重要な情報は、にwidget表示されるXMLコードのブロックです。サンプルファイルは次のようになります。
<test> blah blah
  blah blah blah
  widget
  blah blah blah
</test>
<formula>
  blah
  <details> 
    widget
  </details>
</formula>
上記のサンプルテキストから次の出力を取得しようとしています。
<test>widget</test>
<formula>widget</formula>
事実上、任意の文字列を囲むXMLテキスト/コードのブロックに適用される最高レベルのマークアップタグを含む1行を取得しようとしていますwidget。
コマンドラインのワンライナーを介してこれを実装するための提案はありますか?
ありがとうございました。