0

こんにちは交換したいですdocument.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

(function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();

あらゆる場面で...

だから私は以下のコードを使用しました。

find /cygdrive/c/xampp/htdocs/news -type f -exec sed -i s#document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));#(function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();#g {} \;

しかし、それは置き換えられていません。エスケープに問題はありますか?

ありがとう

4

4 に答える 4

1

sed への引数を引用符で囲み、ネストされた引用符をエスケープする必要があります。そうでなければこれ:

s#document.write(unescape("%3Cscript src='" + gaJsHost +  ...

単一の引数として sed に渡されるのではなく、シェルによって個別の単語に分割されます。

sed スクリプト全体 (その部分) を引用符で囲む必要があります。s#from#to#一重引用符を選択してから'、スクリプト内のすべてを\'.

(また、なぜ私が提案しfind -execたものの代わりに使用しているのですか?)

于 2012-07-10T11:16:37.690 に答える
0

直接的な答えではない場合でも、そのような置き換えには「rpl」ツールを使用できます。cygwinを使用しているように見えるので、ここでwin32ポートを見つけることができます。

于 2012-07-10T10:47:24.260 に答える