あるファイルから別のファイルへの2つのタグ間のXMLコンテンツのコピー

あるファイルから別のファイルへの2つのタグ間のXMLコンテンツのコピー

2つのXMLファイルがあります。

1.xml

<abc>
....
....
</abc>

<xyz attrib1='1234'>
...
...
</xyz>

2.xml

<abc>
xxx
xxx
</abc>
<xyz attrib2='4321'>
xxx
xxxx
</xyz>

最終ファイルを提供するには、シェルスクリプトを使用して1.xmlファイルの「xyz」タグの内容を2.xmlの内容に置き換える必要があります。たとえば、次のようになります。

<abc>
    ....
    ....
    </abc>
    <xyz attrib2='4321'>
    xxx
    xxxx
    </xyz>

ベストアンサー1

そしてsed

sed -n '/<xyz[ >]/,/<\/xyz>/p' 2.xml | \
sed '/<xyz[ >]/,/<\/xyz>/ { /<\/xyz>/! d; r /dev/stdin
    D; }' 1.xml >output.xml

その後には改行文字が必要です/dev/stdin

sedもう一つのきちんとしたが、あまり効率的な方法は次のとおりです。

{
    sed '/<xyz[ >]/,$d' 1.xml
    sed -n '/<xyz[ >]/,/<\/xyz>/p' 2.xml
    sed '1,/<\/xyz>/d' 1.xml
} >output.xml

おすすめ記事