我想替换包含具有一些特殊字符的字符串的行。 我使用\和\来转义特殊字符,但文件中没有任何变化。 我像这样使用sed:
> sed -i '/pnconfig\[\'dbhost\'\] = \'localhost\'/c\This line is removed.' tco.php
我只是想找到包含以下内容的行:
$pnconfig['dbhost'] = 'localhost';
并将该行替换为:
$pnconfig['dbhost'] = '1.1.1.1';
答案 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/"