这是输入:
* 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
umask
仅为用户default
获取值
awk '/default:/,/umask/{if ($0 ~ /umask/){split($0, arr, "="); print(arr[2])}}' input