我有一个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 's/\(^.*conf\[.extra_login_security.\] =\) false/\1 true/' /usr/share/phppgadmin/conf/config.inc.php
用于-i
保存对文件的更改,或者如果您不想覆盖原始文件,则重定向到新文件。
sed 's/\(^.*conf\[.extra_login_security.\] =\) false/\1 true/' > mynewfile.php
如果您没有写入权限,一个技巧mynewfile.php
是将输出通过管道传输tee
到sudo
:
sed 's/\(^.*conf\[.extra_login_security.\] =\) false/\1 true/' | sudo tee mynewfile.php
From man tee
tee - 从标准输入读取并写入标准输出和文件。