1

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

$conf['extra_login_security'] = false;

我想将其更改为:

$conf['extra_login_security'] = true;

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

4

1 回答 1

2

如果您想要将 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是将输出通过管道传输teesudo

sed 's/\(^.*conf\[.extra_login_security.\] =\) false/\1 true/' | sudo tee mynewfile.php

From man teetee - 从标准输入读取并写入标准输出和文件。

于 2012-11-09T11:13:09.843 回答