Я пытаюсь удалить узел из моего Свести файл XML, мой файл XML содержит следующее:удаление узла в XML-файл с СЭДОМ
...
<cellule ref="1111"/>
</blah>
<workdocument id="bar" classement="1"/>
<tablau id="35">
<cellule ref="1250"/>
<area id="foo">
<subarea>Ipsum Lorem Dolor</subarea>
<area>
...
Мне нужно удалить <workdocument id="bar" classement="1"/>
, поэтому от элемента <workdocument
до него закрывает "/>
"
Я попытался следующие с СЕПГ:
echo '<cellule ref="1111"/></blah><workdocument id="bar" classement="1"/><tablau id="35"><cellule ref="1250"/><area id="foo"><subarea>Ipsum Lorem Dolor</subarea><area>' |sed 's/<workdocument.*\/>//'
<cellule ref="1111"/></blah><area id="foo"><subarea>Ipsum Lorem Dolor</subarea><area>
но <cellule ref="1250"/><area id="foo">
также удаляется:/
Пожалуйста, обратите внимание, что значение атрибута classement не известно:/
Спасибо
Как правило, не рекомендуется обрабатывать XML (или другие структурированные данные) с помощью sed или аналогичных инструментов. Является ли ваш вход по-прежнему действительным XML? Возможно, вы захотите изучить инструменты обработки XML, такие как xmlstarlet. В этом случае: 'xmlstarlet ed -d // workdocument file.xml' – Wintermute
привет и спасибо, да, он по-прежнему действителен, поэтому я пытаюсь использовать sed вместо этого, потому что я буду использовать его в сценарии bash, и я не уверен, что xmlstarlet установлен на всех машинах. – Zatla00
Объедините это, это мое предложение. Или зависеть от чего-то вроде python, который вездесущ и имеет XML-обработку в стандартной библиотеке. Проблема с обработкой XML с помощью sed заключается в том, что внезапно недостаточно, чтобы ваш ввод был корректным XML, он должен быть XML, который отформатирован так, как может обрабатывать ваш скрипт. Например, если я поместил пару новых строк после '
Wintermute