在准备用于使用sed
进行xpath解析的XML块时,我试图用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
^
XPath evaluation failure
有人可以解释这里发生了什么以及如何实现正确的替换吗?
答案 0 :(得分:1)
尝试:
sed "s:':\':g"|sed 's:":\":g'