文字列を検索<oneFi institution="12345678">
して削除する必要があります<value maxPAN="19" minPAN="4" prefix="528749"/>
実際:
<oneFi institution="12345678">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="528749"/>
<value maxPAN="19" minPAN="4" prefix="544448"/>
<value maxPAN="19" minPAN="4" prefix="557231"/>
</bin>
</oneFi>
<oneFi institution="854784662">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="528749"/>
<value maxPAN="19" minPAN="4" prefix="544448"/>
</bin>
</oneFi>
期待される:
<oneFi institution="12345678">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="544448"/>
<value maxPAN="19" minPAN="4" prefix="557231"/>
</bin>
</oneFi>
<oneFi institution="854784662">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="528749"/>
<value maxPAN="19" minPAN="4" prefix="544448"/>
</bin>
</oneFi>
ベストアンサー1
たとえば、XML文書が有効であると仮定すると、
<?xml version="1.0"?>
<root>
<oneFi institution="12345678">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="528749"/>
<value maxPAN="19" minPAN="4" prefix="544448"/>
<value maxPAN="19" minPAN="4" prefix="557231"/>
</bin>
</oneFi>
<oneFi institution="854784662">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="528749"/>
<value maxPAN="19" minPAN="4" prefix="544448"/>
</bin>
</oneFi>
</root>
(あなたの例にはルートノードはありません)
その後、XMLstarletを使用できます。
$ xmlstarlet ed -d '//oneFi[@institution="12345678"]//value[@prefix="528749"]' file.xml
<?xml version="1.0"?>
<root>
<oneFi institution="12345678">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="544448"/>
<value maxPAN="19" minPAN="4" prefix="557231"/>
</bin>
</oneFi>
<oneFi institution="854784662">
<bin _list="1">
<value maxPAN="19" minPAN="4" prefix="528749"/>
<value maxPAN="19" minPAN="4" prefix="544448"/>
</bin>
</oneFi>
</root>
XPATH式は、ノードの属性と、選択したノードの下のどこかにあるノードの属性を使用して、//oneFi[@institution="12345678"]//value[@prefix="528749"]
質問で述べたノードと一致します。institution
oneFi
prefix
value
oneFi
ノード属性の値をより具体的に指定する必要がある場合は、次のようにvalue
他の属性を一致させることもできます。
value[@prefix="528749" and @maxPAN="19" and @minPAN="4"]
その表現部分です。
ed -d
XMLstarletコマンドの(または)ビットは、ed --delete
ユーティリティが次のことを行う必要があることを意味します。編集するXML文書と削除式に一致するノードです。