【发布时间】:2020-05-14 09:26:42
【问题描述】:
我有一个输入 xml
<IndexCatalogueRecord SeriesNumber="1" SeriesVolume="3" SeriesPage="594">
<IndexCatalogueID>10305941390</IndexCatalogueID>
<GeneralNote>[Shelved in: B.58]</GeneralNote>
<GeneralNote>[Shelved in: B.458]</GeneralNote>
<GeneralNote>[Shelved in: B.20]</GeneralNote>
<Language>fr</Language>
</IndexCatalogueRecord>
我需要一个解决方案来组合由逗号分隔符分隔的 GeneralNote 元素属性,使其变为
<IndexCatalogueRecord SeriesNumber="1" SeriesVolume="3" SeriesPage="594">
<IndexCatalogueID>10305941390</IndexCatalogueID>
<GeneralNote>[Shelved in: B.58, B.458, B.20]</GeneralNote>
<Language>fr</Language>
</IndexCatalogueRecord>
我的方法是让 xmlstarlet 查询元素的属性值,然后通过管道将其通过 grep 或 awk 进行处理。我可以使用 xmlstarlet 轻松地从 GeneralNote 中获取属性的值
xmlstarlet sel -t -m "//GeneralNote" -v . -n test.xml
但是当我尝试将控制台输出传递给 grep 以使其剥离匹配的字符串“[Shelved in:”和“]”时,我遇到了一些麻烦,如果有更优雅的解决方案,请告诉我。提前致谢
【问题讨论】:
标签: xml xml-parsing xmlstarlet