Правильно ли заменяется & в XML?

Правильно ли заменяется & в XML?

Я хочу заменить «&» на & За исключением следующих вхождений специальных символов XML.

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

Я попробовал метод, упомянутый вЗаменить указанный символ между двумя строками?иЗамена всех `&`, кроме одного в XML-сущности `&`, на `#` с помощью sed в заданном XML-тегепохоже, мне это не подходит.

решение1

Использование однострочного кода на Perl:

perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&amp;/g'

Флаг -pзаставляет Perl вести себя как sed (цикл по строкам STDIN, выполнение действий, вывод на STDOUT), -eсообщает ему, что нужно считывать команду из аргумента, а не из файла.

Замена регулярного выражения делает это:

  • соответствовать&
    • не сопровождается
    • quotили apos...amp
    • точка с запятой
  • заменить&amp;
  • для всех матчей онлайн.

Чтобы использовать его как sed, например

perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&amp;/g' < my-file.xml
./myscript.sh | perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&amp;/g'

Связанный контент