搜索和替换Linux

4
我在尝试进行以下搜索和替换,但出于某些原因它无法工作。我正在尝试用以下内容替换:

require_once('

替换为

require_once($_SERVER['DOCUMENT_ROOT']/'

这些是确切的字符串(包括斜杠和单引号)。

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

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

我做错了什么?

你是否收到了错误信息?我认为问题出在特殊字符的转义上。 - alexkelbo
2个回答

5

您需要转义$/字符:

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

可以使用@作为sed的分隔符,因此您无需转义/。例如:sed -e 's@/asd/@b@'。但是您仍然需要转义$ - dwalter

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接