2013-05-06 151 views
1

在Mac OS X上,管理员可以通过修改位于以下位置的文件来解锁其他管理员的屏幕保护程序: /etc/pam.d/screensaver在bash脚本中使用sed替换文件中的文本

我需要一个简单的命令来更改此文件(我的脚本正在执行许多其他操作,并且我已经以sudo运行bash脚本)。这可能已经改变了,所以我需要测试这个字符串,如果发现就更改。

在文件是

帐户需要 pam_group.so no_warn否认组=管理员,轮RUSER fail_safe

我需要改变这

字符串帐户足够 pam_group.so no_warn拒绝组= admin,whe el ruser fail_safe

理想情况下,我想报告是否需要更改,或者在脚本运行之前已完成更改。

我也可以仅仅注释掉或删除该行,我宁愿将其更改为详细。 这TN详细说明了我试图

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

+1

此外,“帐户所需pam_group.so”或“帐户足够pam_group.so”之间的白色空间可以取决于谁在变化(可能是一个TAB或一个或多个空格字符)我的团队可能已经修改过它 – 2013-05-06 12:39:49

回答

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开头,用替换在第二列。

-1

尝试用sed命令:

sed -i 's/old-word/new-word/g' <filename> 
0

awk ' { if($2 == "required") {sub("required","sufficient");} print }' filename为AWK溶液

+0

似乎有人随机downvoted :) – abasu 2013-05-09 06:25:42