gpt4 book ai didi

regex - Linux 命令 : Find & Replace using regex not woking as expected

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:54 26 4
gpt4 key购买 nike

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

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

我在 ssh 中使用以下命令:

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

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

>

>

>.. 继续按回车键执行命令。

以下命令完美运行(用于将 home/example/public_html 替换为 var/www):

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

最佳答案

你弄乱了引号。

  • 使用 / 以外的分隔符,这样您就不需要转义 /
  • 你不需要在替换中转义
  • 由于替换中有 ',最好使用 "s#..#..#"(即双引号)。但是,您需要对替换中的 $ 进行转义,以防止 shell 尝试展开。

以下内容可能对您有用:

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

关于regex - Linux 命令 : Find & Replace using regex not woking as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com