2012-11-27 54 views
1

OSX下面的命令檢查帳戶是否被禁用(或不是)。從長文本中擦除字符串

我想grep字符串「isDisabled = X」創建一個禁用用戶的報告,但我不知道如何做到這一點,因爲輸出是三行,我對第12第三行字符:

bash-3.2# pwpolicy -u jdoe -getpolicy 
Getting policy for jdoe /LDAPv3/127.0.0.1 

isDisabled=0 isAdminUser=1 newPasswordRequired=0 usingHistory=0 canModifyPasswordforSelf=1 usingExpirationDate=0 usingHardExpirationDate=0 requiresAlpha=0 requiresNumeric=0 expirationDateGMT=12/31/69 hardExpireDateGMT=12/31/69 maxMinutesUntilChangePassword=0 maxMinutesUntilDisabled=0 maxMinutesOfNonUse=0 maxFailedLoginAttempts=0 minChars=0 maxChars=0 passwordCannotBeName=0 validAfter=01/01/70 requiresMixedCase=0 requiresSymbol=0 notGuessablePattern=0 isSessionKeyAgent=0 isComputerAccount=0 adminClass=0 adminNoChangePasswords=0 adminNoSetPolicies=0 adminNoCreate=0 adminNoDelete=0 adminNoClearState=0 adminNoPromoteAdmins=0 

您的意見/建議非常感謝!最終,這將成爲Bash腳本的一部分。謝謝。

回答

1

這是你將如何使用grep匹配 「isDisabled=X」:

grep -o "isDisabled=." 


說明:

  • grep:調用grep命令
  • -o:使用--only-matching選項grep(來自grep手冊:「僅打印匹配行的匹配(非空)部分,每個這樣的部分位於單獨的輸出行上。」
  • "isDisabled=.":這是您給grep的搜索模式。 .是正則表達式的一部分,它表示「匹配除了換行符之外的任何字符」。

用法:

這是你將如何使用它作爲你的腳本的一部分:

pwpolicy -u jdoe -getpolicy | grep -oE "isDisabled=." 

這是你如何可以將結果保存到一個變量:

status=$(pwpolicy -u jdoe -getpolicy | grep -oE "isDisabled=.") 

如果你的c ommand是之前運行一段時間後,該命令的結果如下保存到一個名爲「RESULTS.TXT」,你用它輸入到grep文件:

grep -o "isDisabled=." results.txt 
+0

謝謝!完善。對此,我真的非常感激。 – Dan

1

您可以使用SED作爲

cat results.txt | sed -n 's/.*isDisabled=\(.\).*/\1/p' 

這將打印isDisbaled的值。

+1

貓發現無用! –

+0

我知道這不是非常正確的方式,但這就是我多次使用它..只需要添加重定向到新文件... – mtk

+1

使用'sed -n's /.* isDisabled = \(。\) 。*/\ 1/p'results.txt'來代替。 –