Вывод Grep из нескольких строк в ограниченной среде оболочки

Я просматривал в интернете способы поиска по нескольким строкам вывода, а затем печатал строки, которые содержат строки, о которых я забочусь.
Я фактически запускаю это на брандмауэре контрольной точки, и команда выглядит следующим образом:
cphaprob-ia список
когда я выполняю это, я получаю различные строки вывода. (ниже.) То, что я попытался сделать, - это grep, sed или pcregrep вывод команды для возврата только определенных частей. Моя мысль заключалась в том, что я могу экспортировать значение позиции "x" с помощью awk, затем печатаю свою команду echo с переменной. Но сначала я должен получить только те строки, которые меня волнуют.
Я хочу напечатать строки, которые показывают имя устройства и "состояние".
Я предпочел бы сделать это в строке, а не выводить значения в файл и запускать команду против него.
Что-то вроде

cphaprob-ia список / grep имя / grep состояние

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

имя устройства: x


Текущее состояние:г

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

Я не могу использовать Perl.

есть ли у кого-нибудь предложение?

С. П., выход ниже фактически на разных линиях, но я не могу получить вывод на этом веб-сайте, чтобы отобразить его как отдельные строки. Например, имя устройства: уведомление о проблеме текущее состояние: OK на самом деле две строки. Текущее состояние-следующая строка. Аналогично и для остальных выходных данных.

[Expert@firewall:0]# cphaprob -ia list

Built-in Devices:

Device Name: Problem Notification
Current state: OK

Device Name: Interface Active Check
Current state: OK

Device Name: HA Initialization
Current state: OK

Device Name: Load Balancing Configuration
Current state: OK

Device Name: Recovery Delay
Current state: OK

Registered Devices:

Device Name: Synchronization
Registration number: 0
Timeout: none
Current state: OK
Time since last report: 60485.9 sec

Device Name: Filter
Registration number: 1
Timeout: none
Current state: OK
Time since last report: 60484.8 sec

Device Name: cphad
Registration number: 2
Timeout: none
Current state: OK
Time since last report: 437745 sec

Device Name: fwd
Registration number: 3
Timeout: none
Current state: OK
Time since last report: 2.76118e+06 sec

Device Name: routed
Registration number: 4
Timeout: none
Current state: OK
Time since last report: 60478.4 sec
23
задан studiohack
14.01.2023 11:26 Количество просмотров материала 2921
Распечатать страницу

2 ответа

cphaprob -ia list | grep -e "Name:" -e "state:"

будет делать.

1
отвечен glenn jackman 2023-01-15 19:14

это может сработать, хотя в зависимости от ваших выходных данных это может дать вам несколько дополнительных совпадений, которые вы не хотите (например, он будет соответствовать словам same и status)

cphaprob -ia list | grep "[Ns][at][ma][et]e\?"

Я не уверен, что вы имеете в виду:

на некоторых строках есть экстемпоральные слова, такие как тайм-аут и время с момента последнего отчета, которые я не хочу отображать.

Если вы имеете в виду, что есть строки с другой информацией, которой у вас нет хотите, то выше должны очистить их для вас. Если вы имеете в виду, что иногда дополнительная информация находится в той же строке, что и имя устройства или текущее состояние, и вы не хотите, чтобы эта информация отображалась, потребуется дополнительное форматирование.

-1
отвечен Omnipresence 2023-01-15 21:31

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

bash
command-line
grep
linux
sed
Вверх