私は特定のプロパティを持つxmlファイルを探しています。たとえば、次のパターンが含まれるファイル:そのようなファイルについてはunixコマンドラインから基本的なxml解析を行う最も簡単な方法
<param-value>
<name>Hosts</name>
<description>some description</description>
<value></value>
</param-value>
は、私のような、別のタグの値を解析したいと思います:
<param-value>
<name>Roles</name>
<description>some description</description>
<value>asdf</value>
</param-value>
に沿ってファイル名をプリントアウト"asdf"と入力します。コマンドラインからこれを達成する最も簡単な方法は何ですか?
私が考えていたアプローチの1つは、-lオプションを指定してgrepを使用して一致するファイルをフィルタリングし、次にxargs grepを使用してロールの値を抽出することでした。しかし、grepは複数行正規表現ではうまく動作しません。私はそれが-Pzoオプションを使って行うことができることを示した別の質問を見ましたが、私の場合はうまく動かない運がありませんでした。より簡単なアプローチはありますか?
あなたはPerlなどのスクリプト言語を使用したくない特別な理由がありますか? – Tom
いいえ、perlの解決策は素晴らしい、できればコンパクトな1ライナーですが、私はそれを書く最善の方法を知らない。 – jonderry
xmlstarlet、xpath、およびperlのxpathモジュールは、私が検索を実行するシステムにはインストールされていませんが、もっとも基本的なツールだけで動作するソリューションがあれば役に立ちます。 – jonderry