1

我正在尝试使用 regex 命令替换所有 php 文件中的路径,但它没有按预期工作!

我想替换'/home/example/public_html$_SERVER['DOCUMENT_ROOT'] . '

我在 ssh 中使用以下命令:

find /var/www/advertise/ -name '*.php' -type f -exec sed -i 's/\'\/home\/example\/public_html/\$\_SERVER\[\'DOCUMENT\_ROOT\'\]\ \.\ \'/g' {} \;

当我输入命令并按回车键时,>符号如下:

>

>

> .. 以此类推,我一直按回车键来执行命令。

如下命令完美运行(用于替换home/example/public_htmlvar/www

find /var/www/advertise/ -name '*.php' -type f -exec sed -i 's/home\/example\/public_html/var\/www/g' {} \;
4

1 回答 1

1

你把引号弄乱了。

  • 使用分隔符,/这样您就不需要转义/
  • 你不需要在替换中逃脱
  • 既然你已经'在替换,最好使用"s#..#..#"(即双引号)。但是,您需要$在替换中转义以防止外壳尝试扩展。

以下可能对您有用:

find /var/www/advertise/ -name '*.php' -type f -exec sed -i "s#'/home/example/public_html#\$_SERVER['DOCUMENT_ROOT'] . '#g" {} \;
于 2013-10-06T14:29:34.333 回答