Использование grep для извлечения данных из менеджера подписок - PullRequest
0 голосов
/ 13 июня 2019

Я бы хотел получить определенную информацию из менеджера подписок Red Hat.

Я выполнил несколько команд, но они не дают мне то, что я хочу:

subscription-manager list --consumed 2>/dev/null | \
  grep -e "SKU\|Contract\|Account\|Serial\|Pool ID\|System Type"

Там, где при этом извлекается информация, в диспетчере подписок есть раздел, в котором перечислены REPOS, на которые вы подписаны.

Однако, поскольку это отношение 1-много, например,

Provides:    Red Hat Beta
             Red Hat Enterprise Linux Atomic Host
             Red Hat CodeReady Linux Builder for x86_64
             Red Hat Enterprise Linux Atomic Host Beta
             ...

Я не могу выполнить поиск, если это не беспорядок, или я могу?

В идеале, чтобы повторить это через раздел Provides:, в котором перечислены все подписанные репозитории. Или лучше использовать awk или sed? 1016 *

1 Ответ

1 голос
/ 13 июня 2019

У меня не установлено устройство, на котором он установлен, но попробуйте:

subscription-manager list --consumed 2>/dev/null |
  sed -En '/^Provides:\s+/,/^\s*$/p'

, в котором -En сказано использовать расширенное сопоставление с образцом, но не печатайте без запроса.

/^Provides:\s+/,/^\s*$/p сопоставляет все строки от начальной строки до пустой строки и печатает их.

Если следующей пустой строки нет, попробуйте

sed -En '/^Provides:\s+/,/^\w/{ /^[P ]/p }' 

иливозможно

sed -En '/^Provides:\s+/,/^\w/{ /^Provides: |^\s/p }'
...