用特殊字符替换包含字符串的行

replace a line that contains a string with special characters

我想替换包含具有某些特殊字符的字符串的行。 我使用 \ 和 \ 来转义特殊字符,但文件没有任何变化。 我这样使用 sed:

> sed -i '/pnconfig\[\'dbhost\'\] = \'localhost\'/c\This line is removed.' tco.php

我只想找到包含以下内容的行:

$pnconfig['dbhost'] = 'localhost';

并将该行替换为:

  $pnconfig['dbhost'] = '1.1.1.1';

使用如下:

sed -i.bak '/pnconfig\[\'dbhost\'\] = \'localhost\'/pnconfig\[\'dbhost\'\] = \'1.1.1.1\'/' tco.php

与其第一次修改文件,不如创建备份,然后搜索您的模式,然后将其替换为文件中的上述模式 tco.php

将 sed 用双引号括起来

sed -i "s/\(pnconfig\['dbhost'\] = \)'localhost'/'1.1.1.1'/" filename

测试

$ echo "$pnconfig['dbhost'] = 'localhost';" | sed "s/\(pnconfig\['dbhost'\] = \)'localhost'/'1.1.1.1'/"
$pnconfig['dbhost'] = '1.1.1.1';

通过对 sed 使用双引号,您不必担心反斜杠单引号。

sed -i.bak "/pnconfig\['dbhost'\] = 'localhost'/s/localhost/1.1.1.1/g" File

试试这个。

sed "/$pnconfig\['dbhost']/s/localhost/1.1.1.1/"