SSED удалить многострочный XML код


Я пытаюсь использовать SSED для удаления мультилиний из XML-файла. Я могу удалить некоторые отдельные строки в XML-файле, но мне нужно иметь возможность удалять многострочные строки.

Например:

<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>
<tagnumberone>
   <tagInside>This must be deleted</tagInside>
</tagnumberone>
<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>

Итак, что это значит, что мне нужно иметь возможность удалить строку кода, которая должна быть удалена> , а затем это outertags, так что я получаю следующий результат:

<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>
<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>

Я пытаюсь использовать следующий Super Sed commando: ssed s:<tagnumberone><tagInside>This must be deleted</tagInside></tagnumberone>:: <file.xml >out.xmle

Это дает мне следующую ошибку: унтер-офицерская команда "с".

Я что-то упустил?

Спасибо!

2 2

2 ответа:

Вероятно, вы забыли о пробелах в "This must be deleted". Вы пробовали цитировать строку ssed аргументы?

ssed "s:\<tagnumberone\>\<tagInside\>This must be deleted\<\/tagInside\>\<\/tagnumberone\>::" <file.xml >out.xmle

Я нашел решение. На самом деле, я не знаю, почему это работает, но тем не менее, это работает. Если кто-то сейчас может объяснить мне следующий код, это было бы потрясающе:

ssed /<tagnumberone>/!b;N;N;/<tagnumberone>\s*\n\s*<tagInside>This must be deleted<\/tagInside>\s*\n\s*<\/tagnumberone>/d <oldFile >newFile

Спасибо!