Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用shell脚本修改配置行_Bash_Shell_Awk - Fatal编程技术网

Bash 如何使用shell脚本修改配置行

Bash 如何使用shell脚本修改配置行,bash,shell,awk,Bash,Shell,Awk,我有一个phppgadmin配置文件(/usr/share/phppgadmin/conf/config.inc.php) 它有一行: $conf['extra_login_security'] = false; 我想把它改为: $conf['extra_login_security'] = true; 使用bashshell脚本。我知道我必须使用sed/awk之类的东西。但是我不知道如何准确地使用它来做我想做的事情。如果你想要一个简单的从false到true的全局替换,那么sed's/fa

我有一个
phppgadmin
配置文件(
/usr/share/phppgadmin/conf/config.inc.php
) 它有一行:

$conf['extra_login_security'] = false;
我想把它改为:

$conf['extra_login_security'] = true;

使用
bash
shell脚本。我知道我必须使用sed/awk之类的东西。但是我不知道如何准确地使用它来做我想做的事情。

如果你想要一个简单的从false到true的全局替换,那么
sed's/false/true/g'
就可以了

$ echo "conf['extra_login_security'] = false" | sed 's/false/true/g'
conf['extra_login_security'] = true
但是,如果只更改以
conf[
开头的行,并且只将值更改为true,则这是更好的
sed's/\(^.*conf\[.*\]=\)false/\1 true/g'

echo "conf['extra_login_security'] = false" | sed 's/\(^.*conf\[.*\] =\) false/\1 true/g'
conf['extra_login_security'] = true
编辑:

仅此一行可以通过以下操作完成:

sed-i的/\(^.*conf\[.extra\u login\u security.\]=\)false/\1 true/'/usr/share/phppgadmin/conf/config.inc.php

使用
-i
保存对文件的更改,或者如果不想覆盖原始文件,则重定向到新文件

sed的/\(^.*conf\[.extra\u login\u security.\]=\)false/\1 true/'>mynewfile.php

如果您没有写入
mynewfile.php
的权限,一个技巧是将输出通过管道传输到
tee
sudo
,即:

sed的/\(^.*conf\[.extra\u login\u security.\]=\)false/\1 true/'\124; sudo tee mynewfile.php

man-tee
tee-从标准输入读取并写入标准输出和文件