替换包含具有特殊字符的字符串的行

时间:2015-01-10 08:19:52

标签: sed

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

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

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

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

并将该行替换为:

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

4 个答案:

答案 0 :(得分:1)

用双引号将sed包装为

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

<强>测试

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

答案 1 :(得分:0)

使用如下:

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

不是第一次修改文件,而是创建备份,然后搜索您的模式,然后将其替换为文件中的另一个tco.php

答案 2 :(得分:0)

您不必担心使用sed的双引号来反对单引号。

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

答案 3 :(得分:0)

试试这个。

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