Я пытаюсь заменить одинарные кавычки на sed
при подготовке фрагмента XML для разбора xpath с помощью xmllint
.В соответствии со спецификацией xpath я должен заменить '
на '
, а "
на "
.Вот выражения sed
, которые я настроил для этого:
sed "s/'/\'/g" | sed "s/\"/\"/g"
Я знаю, что символ &
относится к исходному совпадению, поэтому я избежал этого, нопо некоторым причинам они, кажется, не работают.Единая кавычка все еще не экранируется при вводе в xmllint
.Сокращенный пример:
XPath error : Invalid predicate
/rss/channel/item[title='...Jeanne d'Arc...']/description
^
XPath evaluation failure
Следующее, что я попробовал, было двойное побег безрезультатно.Но что интересно, тройной побег добавил выражение замены, не удаляя начальную кавычку!Я не понимаю, что здесь происходит:
sed "s/'/\\\'/g" | sed "s/\"/\\\"/g"
XPath error : Invalid predicate
/rss/channel/item[title='...Jeanne d'apos;Arc...']/description<br>
^
XPath evaluation failure
Может ли кто-нибудь объяснить, что здесь происходит и как добиться правильной замены?