0

検索しましたが、解決策が見つかりませんでした。以前に回答があった場合は申し訳ありません。私はシェルが得意ではありません。

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

しかし、スラッシュと一重引用符のために機能していないと思います。私はこれらをエスケープしようとしまし\たが、役に立ちませんでした。

4

1 に答える 1

2

An alternate delimiter for the s operator could be used to avoid picket fences. $this will be considered to be a variable unless the $ is escaped. The parentheses have to be escaped as well. Else they form a capture group. Since it is a one-liner and quotes have been exhausted, single-quotes have been encoded using hexadecimal escapes. The following should work:

s{\$this->helper\(\x{27}catalog/product\x{27}\)->getPriceHtml}{\$this->getPriceHtml}g;

Or:

s{(?<=\$this)->helper\(\x{27}catalog/product\x{27}\)(?=->getPriceHtml)}{}g;
于 2012-08-29T14:14:38.310 に答える