在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详述了我正在尝试的内容
答案 0 :(得分: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
。
答案 1 :(得分:0)
awk ' { if($2 == "required") {sub("required","sufficient");} print }' filename
答案 2 :(得分:-1)
尝试使用sed命令:
sed -i 's/old-word/new-word/g' <filename>