Как использовать разделитель записи 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:» нет пустой строки. Я googled для awk разделителей записей, но не узнал, как это сделать. Как я могу это сделать? («…» – это просто другие атрибуты ..)

UPDATE: обновлен шаблон ввода, спасибо

  • awk выдает выбор строк между двумя шаблонами
  • Чтение номеров из файла управления и извлечение совпадающих номеров строк из файла данных
  • Преобразование столбца с использованием даты и добавление в файл csv
  • Удаление строк, содержащих повторяющийся текст
  • Как использовать Awk для печати между двумя позиционными параметрами
  • Извлечение определенных данных из файла с помощью ключевого слова
  • sed + добавить последнее слово для каждой строки, только если слово не отображается
  • Awk: Как пропустить файл, чтобы получить каждую строку?
  • 2 Solutions collect form web for “Как использовать разделитель записи AWK?”

    Это работает (код изменен, чтобы получить значение только для пользователя по умолчанию):

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

    -F задает разделитель полей ввода. Код соответствует строкам с umask = в них и печатает их второе поле.

    для получения значения umask только для пользователя по default

     awk '/default:/,/umask/{if ($0 ~ /umask/){split($0, arr, "="); print(arr[2])}}' input 
    Linux и Unix - лучшая ОС в мире.