У меня есть вход 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. Я могу легко получить значение атрибута из GeneralNote, используя xmlstarlet
xmlstarlet sel -t -m "//GeneralNote" -v . -n test.xml
, но когда я попытался передать консольный вывод в grep, чтобы он обрезал совпадающую строку "[Shelved in:" and "]" У меня возникли проблемы, пожалуйста, дайте мне знать, если есть более элегантное решение. заранее спасибо