sed:替换匹配的行中的一个或多个组值

sed:替换匹配的行中的一个或多个组值

我正在尝试更改文件中的配置变量。基本上,该文件有多行,格式如下:

$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。该工具将其按字面处理,因为它不在末尾。

相关内容