我正在尝试用sed替换两个php数据库数组变量的值,但它不能像预期的那样工作
下面是一个示例:
echo \$DB['TYPE']='MYSQL' | sed "s|^$DB['TYPE']=.*$|$DB['TYPE']='POSTGRESQL'|g"我正在尝试取代$DB['TYPE']='MYSQL' with $DB['TYPE']='POSTGRESQL'
我用这种方法逃脱了它,但不起作用,我一直在获取$DB[TYPE]=MYSQL
echo \$DB['TYPE']='MYSQL' | sed "s|^\$DB[\'TYPE\']=.*$|\$DB[\'TYPE\']=\'POSTGRESQL\'|g"提前感谢
发布于 2014-04-28 23:33:41
我正在试着取代
$DB['TYPE']='MYSQL' with $DB['TYPE']='POSTGRESQL'
您可以使用:
sed "s|\(\$DB\['TYPE'\]=\)'MYSQL'|\1'POSTGRESQL'|g" file发布于 2014-04-28 23:40:09
尽可能减少重复:
$ echo "\$DB['TYPE']='MYSQL'" |
sed "s|^\(\$DB\['TYPE'\]='\)[^']*|\1POSTGRES|"
$DB['TYPE']='POSTGRES'您使用行锚,因此g修饰符是无用的--模式每行最多只能匹配一次。
您需要在echo行上使用双引号。如果没有它们,shell会将单引号视为引号字符,而不是原义字符:
$ echo \$DB['TYPE']='MYSQL'
$DB[TYPE]=MYSQL发布于 2014-04-28 23:46:02
在你的例子中sed doen找不到确切的短语,为什么你不像这样交换你想交换的单词
echo \$DB['TYPE']='MYSQL' | sed "s|MYSQL|POSTGRESQL|g"https://stackoverflow.com/questions/23345157
复制相似问题