XML コンテキスト grep

XML コンテキスト grep

以下は私のファイルの内容です。

<A>
<number>100</number>
<name>Word1</name>
</A>
<A>
<number>101</number>
<name> Word2</name>
</A>

grepを実行すると、次のWord1出力を表示しようとします。

<A>
<number>100</number>
<name>Word1</name>
</A>

grepを実行すると、次のWord2出力を表示しようとします。

<A>
<number>101</number>
<name>Word2</name>
</A>

誰でも助けることができますか?

ベストアンサー1

これが正しい形式のXML文書の一部である場合は、XMLパーサーを使用して必要な部分を抽出できます。

満足するよく構造化必須です。<root>XMLフラグメントをとでラップしました</root>

xmlstarlet sel -t -c '//A[name="Word1"]' -n file.xml

これを直接満たすことができない場合は、明示的にラップできます。

( echo '<root>'; cat file.xml; echo '</root>' ) | xmlstarlet sel -t -c '//A[name="Word1"]' -n

どちらの場合も、出力は次のようになります。

<A>
<number>100</number>
<name>Word1</name>
</A>

おすすめ記事