1

在 Mac OS X 上,管理员可以通过修改位于以下位置的文件来解锁另一个管理员的屏幕保护程序: /etc/pam.d/screensaver.

我需要一个简单的命令来更改此文件(我的脚本正在执行许多其他操作,并且我已经将 bash 脚本作为 sudo 运行)。这可能已经更改,因此我需要测试字符串并在找到时进行更改。

在文件中是字符串

需要帐户           pam_group.so no_warn deny group=admin,wheel ruser fail_safe

我需要将其更改为

帐户    足够       pam_group.so no_warn deny group=admin,wheel ruser fail_safe

理想情况下,我想报告是否有必要进行更改,或者在我的脚本运行之前已经进行了更改。

我也可以仅注释掉或删除该行,我更愿意对其进行详细更改。这个 TN 详细说明了我正在尝试的内容

http://support.apple.com/kb/HT5145?viewlocale=en_US

4

3 回答 3

1
$ cat foo
foo bar
account    required       pam_group.so no_warn deny group=admin,wheel ruser fail_safe
account    required       am_group.so no_warn deny group=admin,wheel ruser fail_safe
accoi    required       pam_group.so no_warn deny group=admin,wheel ruser fail_
foo bar

$ awk '$1~/^account$/ && $3~/^pam_group.so/ && $2~/^required$/ { $2 = "sufficient" }1' foo
foo bar
account sufficient pam_group.so no_warn deny group=admin,wheel ruser fail_safe
account    required       am_group.so no_warn deny group=admin,wheel ruser fail_safe
accoi    required       pam_group.so no_warn deny group=admin,wheel ruser fail_
foo bar

如果第一列 ( $1) 是account,第二列 ( $2) 是required,并且第三列 ( $3) 以字符串 开头,则在第二列中pam_group.so替换required为。sufficient

于 2013-05-06T12:44:32.943 回答
0

awk ' { if($2 == "required") {sub("required","sufficient");} print }' filename 对于 awk 解决方案

于 2013-05-06T12:45:44.380 回答
-1

尝试使用 sed 命令:

sed -i 's/old-word/new-word/g' <filename>
于 2013-05-06T12:42:23.020 回答