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-从标准输入读取并写入标准输出和文件