入力は次のとおりです。
* true, false, yes, no, always, never.
*
*******************************************************************************
default:
su = true
...
maxexpired = -1
umask = 077
expires = 0
someuser:
su = true
...
次の出力が必要です。
077
したがって、デフォルトのユーザーの場合は、「umask = 077」行だけが必要です。これは /etc/security/user の一部です。 "grep -p" は "default:" の前に空行がないため動作しません。 awkレコード区切り文字を検索しましたが、実行方法が見つかりませんでした。どうすればいいですか? ("..."は他の属性にすぎません..)
更新:入力テンプレートが更新されました。ありがとうございます。
答え1
これは機能します(デフォルトのユーザーの値のみを取得するようにコードを編集します)。
awk -F'= ' '/default:/,/umask =/{ if(/umask =/){ print $2 } }' /etc/security/user
-F
入力フィールドの区切り文字を設定します。このコードはumask =
その中の行と一致し、2番目のフィールドを印刷します。
答え2
umask
ユーザーだけのdefault
価値を得る
awk '/default:/,/umask/{if ($0 ~ /umask/){split($0, arr, "="); print(arr[2])}}' input