如何使用AWK记录分隔符?

如何使用AWK记录分隔符?

这是输入:

*           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 

相关内容