Выводить только первые строки вывода команды, если шаблон соответствует - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь найти только идентификаторы учетных записей приложения из вывода команды, который показывает большой список сведений об учетной записи ... ниже приведено несколько подробных сведений об учетной записи ..

Пример команды и ее вывод ..

vaultctrl --show --type = storage

 e2158-1234
    description = 'storage_ASDFGHJ'
    enabled = True
    internal.created = 1586282282.590337
    internal.messages = []
    internal.modified = 1586282282.590337
    internal.secondary = True
    internal.store = '__primary__'
    internal.valid = True
    label = 'storage_AKIAWUSH5'
    types = ['storage']

e2158-4567
    description = 'db_dsddssdsade'
    enabled = True
    internal.created = 1586282282.590337
    internal.messages = []
    internal.modified = 1586282282.590337
    internal.secondary = True
    internal.store = '__primary__'
    internal.valid = True
    label = 'db_dsddssdsade'
    types = ['storage']

e2158-7890
    description = 'storage_eegwewqege'
    enabled = True
    internal.created = 1586282282.590337
    internal.messages = []
    internal.modified = 1586282282.590337
    internal.secondary = True
    internal.store = '__primary__'
    internal.valid = True
    label = 'storage_eegwewqege'
    types = ['storage']

Я хотел бы перечислить только первые строки этих данных учетной записи, только если на ярлыке учетной записи есть текст «stoarge_» ..

Например,

1011 *

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020
awk -v FS='\n' -v RS='\n\n' '$10 ~ /storage/ {print $1}' file

При этом используется двойной перевод строки для разделения «записей» и перевод строки для разделения полей. Похоже, что каждая запись имеет одинаковое количество полей, и "метка" является 10-м.

0 голосов
/ 13 апреля 2020

Передайте свою команду на

awk '!/=/{h=$0;f=1};/storage_/&&f{print h;f=0}'
  • !/=/{h=$0;f=1}, чтобы проверить, есть ли в строке знак =. Если нет, сохраните эту строку в h и установите f=1.

  • /storage_/&&f{print h;f=0} проверяет, содержит ли строка storage_ и установлено ли f. Если да, печатает заголовок h и снимает f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...