2つの文字列間の値の抽出

2つの文字列間の値の抽出

右の間の値を抽出したい。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><HorizonResponse><assignedDevices><assignedDevice><deviceType>EOS</deviceType><assignedProduct><installDate>2019-09-19T00:00:00+02:00</installDate><entitlements>600000001,600000080</entitlements><serviceIDs></serviceIDs>2019-09-19T00:00:00+02:00</installDate><deInstallDate>1753-01-01T00:00:00+01:00</deInstallDate><casIndicator>14</optionQuantity><entitlements>600000300</entitlements><serviceIDs><assignedOption>
      ...

ベストアンサー1

XML文書が正しくフォーマットされていると仮定すると(現在5つの閉じたタグが欠落している場合)、これを使用してxmlstarlet文書内のすべてのノードの値を次のように検索できます。entitlements

$ xmlstarlet sel -t -v '//entitlements' -nl file.xml
600000001,600000080
600000300

特定に関連する値を取得するにはoptionID:

$ xmlstarlet sel -t -v '//assignedOption[optionID=1000929]/entitlements' -nl file.xml
600000300

おすすめ記事