Я сталкиваюсь с аналогичной трудностью, которую задали здесь .
Мой файл журнала Linux ( пример файла журнала ) содержит записи, как показано ниже, и я хотел быочистить строки 'Total Action Failed :
' и 'Total Action Processed:
' только в том случае, если за этими двумя строками следует строка, содержащая строку '> Processing file: R
'.
INF----BusinessLog:08/06/19 20:44:33 > Processing file: R1111111.R222222222.TEST0107, and creates the reports.
Line2
Line3
Line4
INF----BusinessLog:08/06/19 20:44:33 > Data
=========
Overview:
Total Action : 100
Total Action Failed : 0
Total Action Processed: 100
INF----BusinessLog:08/06/19 20:44:35 > Processing file: R333333333.R222222222.TEST0107, and creates the reports.
Line2
Line3
Line4
INF----BusinessLog:08/06/19 20:44:35 > Data
=========
Overview:
Total Action : 50
Total Action Failed : 0
Total Action Processed: 50
Пробовал с помощью решения pcregrep
дано по предыдущему вопросу, как показано ниже:
/opt/pdag/bin/pcregrep -M '> Processing file: R.*(\n|.)*Total Action Failed :.*(\n|.)*Total Action Processed:'" $log_path/LogFile.log
У меня возникли проблемы со следующими двумя проблемами:
(1) Команда выше возвращает все строк, которые присутствуют между линиями шаблона - что не требуется
(2) Если файл журнала содержит записи, указанные ниже (> Processing file: Z
) вместо (> Processing file: R
), тогдаКоманда pcregrep выше не дает точного результата.
INF----BusinessLog:08/06/19 20:44:33 > Processing file: R1111111.R222222222.TEST0107, and creates the reports.
Line2
Line3
Line4
INF----BusinessLog:08/06/19 20:44:33 > Data
=========
Overview:
Total Action : 100
Total Action Failed : 0
Total Action Processed: 100
INF----BusinessLog:08/06/19 20:44:35 > Processing file: Z333333333.R222222222.TEST0107, and creates the reports.
Line2
Line3
Line4
INF----BusinessLog:08/06/19 20:44:35 > Data
=========
Overview:
Total Action : 50
Total Action Failed : 0
Total Action Processed: 50
INF----BusinessLog:08/06/19 20:44:45 > Processing file: R555555555.R222222222.TEST0107, and creates the reports.
Line2
Line3
Line4
INF----BusinessLog:08/06/19 20:44:54 > Data
=========
Overview:
Total Action : 300
Total Action Failed : 45
Total Action Processed: 300
Может ли кто-нибудь помочь мне найти решение этой проблемы?
Мне нужны только три строки, как показано ниже, когда все шаблоны совпадаютв том же порядке;Кроме того, число строк между первым шаблоном > Processing file: R
и вторым шаблоном Total Action Failed :
отличается, и оно не всегда будет 3 линиями.
INF----BusinessLog:08/06/19 20:44:33 > Processing file: R1111111.R222222222.TEST0107, and creates the reports.
Total Action Failed : 0
Total Action Processed: 50
INF----BusinessLog:08/06/19 20:44:45 > Processing file: R555555555.R222222222.TEST0107
Total Action Failed : 45
Total Action Processed: 300