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 

관련 정보