【问题标题】:Search and Replace Linux搜索和替换 Linux
【发布时间】:2012-12-25 05:50:18
【问题描述】:

我正在尝试执行以下搜索和替换,但由于某种原因它不起作用。我正在尝试替换:

require_once('

require_once($_SERVER['DOCUMENT_ROOT']/'

这些是确切 srings(包括斜线和单引号)。

这是我尝试过的,但我无法让它工作:

find ./ -type f -readable -writable -exec sed -i "s/require_once(\'/require_once($_SERVER['DOCUMENT_ROOT'] . \'\//g" {} \;

我做错了什么??

【问题讨论】:

  • 您收到错误消息吗?我认为问题在于特殊字符的转义。

标签: linux sed replace


【解决方案1】:

您需要转义 $/ 字符:

sed "s/require_once('/require_once(\$_SERVER['DOCUMENT_ROOT']\/'/g"

【讨论】:

  • 可以使用@作为sed的分隔符,所以你不需要转义/。例如:sed -e 's@/asd/@b@'。但是你仍然需要逃避$
【解决方案2】:

您需要对双引号内的美元符号进行反斜杠转义,否则 shell 会插入(不存在的)环境变量 _SERVER,并将其替换为空字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2011-12-01
    • 2014-06-24
    • 2020-07-20
    • 2011-08-15
    • 2014-09-13
    相关资源
    最近更新 更多