Source file example:
<HDR></HDR><b></b><c></c>
(1行で生成されたXMLファイル)
または
Source file example:
<HDR>
</HDR>
<b>
</b>
<c>
</c>
<b>
両方のソース形式から古いファイルのすべての内容を削除する必要があります。私は次の方法を試しました。
sed 's/^.*b/b/'
しかし、それはそれを置き換えることはありません。他の方法があれば教えてください。
ベストアンサー1
XML文書が次のようによく構成されているとします。
<document>
<HDR>
</HDR>
<b>
</b>
<c>
</c>
</document>
それからあなたは利用可能ですXMLスターHDR
以下のようにすべてのタグを削除してください。
xmlstarlet ed -d '//HDR' file.xml >newfile.xml
タグHDR
の直後にあるタグのみを削除します。b
xmlstarlet ed -d '//HDR[following-sibling::*[1][name() = "b"]]' file.xml >newfile.xml
XMLStarlet を使用してタグの内容を変更することもできます。
$ xmlstarlet ed -u '//HDR[following-sibling::*[1][name() = "b"]]' -v 'New header value' file.xml
<?xml version="1.0"?>
<document>
<HDR>New header value</HDR>
<b/>
<c/>
</document>
$ xmlstarlet ed -i '//HDR[following-sibling::*[1][name() = "b"]]' -t attr -n 'new_attribute' -v 'hello' file.xml
<?xml version="1.0"?>
<document>
<HDR new_attribute="hello"/>
<b/>
<c/>
</document>