用特殊字符替换包含字符串的行
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/"
我想替换包含具有某些特殊字符的字符串的行。 我使用 \ 和 \ 来转义特殊字符,但文件没有任何变化。 我这样使用 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/"