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 ответа:
Вероятно, вы забыли о пробелах в "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
Спасибо!