Como usar o separador de registros AWK?

1

Aqui está a entrada:

*           true, false, yes, no, always, never.
*
*******************************************************************************
default:
    su = true
    ...
    maxexpired = -1
    umask = 077
    expires = 0

someuser:
    su = true
    ...

e eu só preciso dessa saída:

077

Portanto, só preciso da linha "umask = 077" para o usuário padrão. Este é um trecho de / etc / security / user. "grep -p" não funciona, porque não há nenhuma linha vazia antes de "default:". Eu pesquisei por separadores de registros do awk, mas não descobri como fazer isso. Como posso fazer isso? ("..." são apenas outros atributos ..)

UPDATE: atualizou o modelo de entrada, obrigado

    
por gasko peter 11.07.2013 / 21:50

2 respostas

3

Isso funciona (código editado para obter o valor apenas para o usuário padrão):

awk -F'= ' '/default:/,/umask =/{ if(/umask =/){ print $2 } }' /etc/security/user

-F define o separador do campo de entrada. O código corresponde às linhas com umask = e imprime seus segundos campos.

    
por 11.07.2013 / 21:54
1

para obter o valor umask apenas para o default user

awk '/default:/,/umask/{if ($0 ~ /umask/){split($0, arr, "="); print(arr[2])}}' input 
    
por 11.07.2013 / 22:34

Tags