grep для x # строк, следующих за совпадением из определенной сессии - PullRequest
0 голосов
/ 06 июня 2011

как использовать оболочку для grep для определенного сеанса, ошибки и всего остального, следующего за ошибкой, но не для другого сеанса.

вот пример:

Mon Jun  6 14:19:12 2011 (1307369952): Received from  10.25.68.106; Session:48090
Message   : 0x300 (NDMP_TAPE_OPEN)
Timestamp : 1307369953
XSequence : 6
RSequence : 0
Error     : 0 (NDMP_NO_ERR)
    Device : tape016
    Mode : 0 (Read Only)

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

Error     : 0 (NDMP_NO_ERR)
Device : tape016
Mode : 0 (Read Only)

Спасибо, Брайан

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Используйте параметр -A, чтобы включить следующие 7 строк после совпадения, а затем tail, чтобы получить последние 3 строки этого вывода. Пример:

grep -A 7 "Session:48090" file | tail -n 3
1 голос
/ 06 июня 2011

Если вы не знаете точно, сколько строк находится после вашей строки «Сеанс», но вы знаете, что вам нужны «Ошибка», «Устройство» и «Режим», вы можете сделать это:

sed -ne '/Session:48090/,/Session:/{/^[        ]*Error/p;/^[        ]*Device/p;/^[        ]*Mode/p}' your.file

Внутри каждой из этих квадратных скобок есть пробел и табуляция.

...