对文件执行就地更新的正确语法是什么:
"redis"=>array(
'enabled' => false,
至
"redis"=>array(
'enabled' => true,
我已经尝试过类似的方法,但不起作用
sed -i "s/\"redis\"=>array(\n 'enabled' => false/\"redis\"=>array(\n 'enabled' => true/" input.php
最佳答案
你可以使用
sed -i '/"redis"=>array($/{N;s/\('"'"'enabled'"'"' => \)false/\1true/}' file
请参阅online demo :
#!/bin/bash
s='"redis"=>array(
'"'"'enabled'"'"' => false,'
sed '/"redis"=>array($/{N;s/\('"'"'enabled'"'"' => \)false/\1true/}' <<< "$s"
输出:
"redis"=>array(
'enabled' => true,
这里,
/"redis"=>array($/
- 匹配以"redis"=>array(
string and 结尾的行
{N;s/\('"'"'enabled'"'"' =>\)false/\1true/}
-N
附加换行符char 并将下一行添加到模式空间,s/\('enabled' =>\)false/\1true/
匹配并捕获到组 1'enabled' =>
子字符串,然后仅匹配false
,而\1true
将匹配项替换为第 1 组值 +true
子字符串。
关于sed - 如何使用sed替换多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68185066/