2013-05-06 238 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