0

我想在主目录下的所有文件中搜索var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");并用“谷歌分析代码”替换它。

在 php eclips 编辑器中,它显示所有出现但不能一次全部替换。所以,我正在考虑使用shell脚本。

/home/project/news4u/web 是我的 rot 目录以及如何使用sed命令来实现它。

我试过sed s/'var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");'/'google analytics' *

4

1 回答 1

1

如果你有 GNU sed,它有-i可以就地编辑文件的选项。如果你有bash你需要启用 globstar:

shopt -s globstar

因为 afairsed可以遍历目录树本身

sed -i.bak "s@'var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : "http://www.");'@'google analytics'@" **

-i.bak将备份每个带有.bak扩展名的文件。如果出现问题,这很有用。

如果一切正常,我建议您首先-i在某些特定文件上使用不带选项的“干”运行进行检查,然后再使用-i.

附言。如果您没有 GNU sed 或 bash 或两者都没有,您可以做得更复杂,但 POSIX 兼容方式:

find . -type f -exec sed "s@'var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : "http://www.");'@'google analytics'@" {} > {}.tmp \; -exec mv {}.tmp {} \;
于 2012-07-06T10:04:24.157 回答