我正在尝试更改文件中的配置变量。基本上,该文件有多行,格式如下:
$config['var'] = 'val';
期望的输出:
$config['var'] = 'new_value';
这是我目前想到的:
sed -i -r "s/^\$config\['var'\]\s*=\s*(..*);$/\1'new_value'/g" config.cfg
我尝试过无数类似问题的答案,但都无济于事。有什么线索可以告诉我我可能做错了什么吗?
答案1
您不必在搜索模式中包含config
或。使用before仅在以 开头的行内执行搜索和替换。这使整个任务更容易。var
/^$config\['var'\]/
s/…/…/
$config['var']
sed "/^\$config\['var'\]/ s/=.*;/= 'new_value';/"
注意$
,由于双引号, 被转义。当它到达 时,它不再被转义sed
。该工具将其按字面处理,因为它不在末尾。