我已经搜索过,但没有找到解决方案,很抱歉,如果之前已经回答过这个问题,那我就不擅长了。
我正在尝试进行递归搜索,并通过SSH替换所有文件。
到目前为止,我已经得到了这个:
find . -type f | xargs -d "\n" perl -pi -e 's/$this->helper('catalog/product')->getPriceHtml/$this->getPriceHtml/g'
我正在尝试替换它:
$this->helper('catalog/product')->getPriceHtml
用这个:
$this->getPriceHtml
但我觉得它因为斜线和单引号而无效。我试图用\
逃避这些,但无济于事,有什么想法吗?
答案 0 :(得分:2)
s
运算符的备用分隔符可用于避免 picket fences 。除非转义$this
,否则$
将被视为变量。括号也必须转义。否则他们组成一个捕获组。由于它是单行并且引号已经用尽,因此单引号已使用十六进制转义编码。以下应该有效:
s{\$this->helper\(\x{27}catalog/product\x{27}\)->getPriceHtml}{\$this->getPriceHtml}g;
或者:
s{(?<=\$this)->helper\(\x{27}catalog/product\x{27}\)(?=->getPriceHtml)}{}g;