Сейчас я ищу в архивных файлах GZIP 3.297 следующую команду:
zegrep -B 60 -E 'DMAStatus.*nError\ {13}.{3,5}\ $' collector_2018-*
Что я хотел бы осознать:
Для замены опции
-B 60
с определенным шаблоном поиска.
Это означает, что сейчас я извлекаю 60 строк перед каждым результатом поиска. Тем не менее, 60 строк может быть слишком мало, но и слишком много. (В зависимости от того, что, а точнее, сколько строк записывается в журнал до
'DMAStatus.*nError\ {13}.{3,5}\ $'
записано)
Кстати, конечный шаблон: '\ {13}.{3,5}\ $'
- это просто конкретная строка, которую я ищу в конце файлов.
\ {13}
= Искать 13 пробелов
.{3,5}
= Искать любую строку длиной 3-5 символов
\ $'
= Далее следует еще один символ пробела, заканчивающийся EOL $
Я знаю, что каждое сообщение об ошибке вызывается одним конкретным набором символов: 01TNL
Как запустить команду zegrep
для поиска шаблона поиска, указанного выше, а затем распечатать любую строку, начиная с 01TNL
, до шаблона поиска?
Я добавляю здесь пример четырех разных файлов журнала, скопированных вместе в один файл в Notepad ++.
Я забыл добавить важную информацию, к сожалению. Боюсь, именно поэтому подход с использованием awk
не сработал.
Строка 01TNL
появляется несколько раз в каждом файле журнала. Если строка постоянно 01TNL000
, это не ошибка, и файл журнала продолжает расти.
Любая другая комбинация, кроме трехкратных 000
, обрабатывается как ошибка.
Файлы журнала без ошибок в конце должны игнорироваться, для любых других случаев вся информация о файле журнала, например, из. строка 01TNL020
до конечной строки DMAStatus->nError
и все, что между ними должно быть напечатано.
############ Logfile 2018-10-16_10-23-25 started pid 88108
10:23:53.987 FIO: rcvd ".01TNL000"
10:24:12.803 FIO: rcvd ".01TNL000"
10:24:30.934 FIO: rcvd ".01TNL000"
10:24:49.040 FIO: rcvd ".01TNL0**2**0"
10:24:49.702 DMSG: DMAStatus->nError 2329
############ Logfile 2018-10-17_20-35-08 started pid 187491
20:36:47.838 FIO: rcvd ".01TNL000"
20:36:53.487 FIO: rcvd ".01TNL000"
20:36:58.418 FIO: rcvd ".01TNL000"
20:37:02.329 FIO: rcvd ".01TNL000"
21:24:51.060 FIO: rcvd ".01TNL000"
21:24:54.864 FIO: rcvd ".01TNL000"
21:24:58.773 FIO: rcvd ".01TNL000"
21:25:03.175 FIO: rcvd ".01TNL000"
21:25:03.340 DMSG: DMAStatus->nError 0
############ Logfile 2018-10-15_18-45-08 started pid 42128
18:46:49.656 FIO: rcvd ".01TNL000"
18:46:55.980 FIO: rcvd ".01TNL000"
18:47:01.407 FIO: rcvd ".01TNL000"
18:47:05.266 FIO: rcvd ".01TNL000"
18:47:09.130 FIO: rcvd ".01TNL000"
18:52:57.211 FIO: rcvd ".01TNL000"
18:53:01.146 FIO: rcvd ".01TNL000"
18:53:05.006 FIO: rcvd ".01TNL000"
18:53:09.611 FIO: rcvd ".01TNL000"
18:53:16.078 DMSG: DMAStatus->nError 0
############ Logfile 2018-10-18_03-32-00 started pid 12504
03:33:52.948 FIO: rcvd ".01TNL000"
03:33:55.429 FIO: rcvd ".01TNL00**1**"
03:34:01.823 DMSG: DMAStatus->nError 2288
Большое спасибо.