Как извлечь журнал используя скрипт bash между датой / временем и другим - PullRequest
0 голосов
/ 05 июня 2019

имеют 3 файла журнала и должны извлекать через bash период, однако он не идентифицирует файл как дату / время.Может кто-нибудь помочь мне с тем, как сценарий, использующий sed, awk или даже grep, может получить журнал от ГГГГ / ММ / ДД ЧЧ: ММ: сс до ГГГГ / ММ / ДД ЧЧ: ММ: сс?

Мои журналыфайлы генерируются примерно так:


    2019-06-04-06.48.05.040000  INFO v65a8fe79:16a8d792e10:-d37:10.150.100.000 66.200.83.195 |36983 RD8jrq1limntMPACJ4iRx-D
    2019-06-04-07.38.03.145000  INFO 2d5bb9b6:16a8d794bd9:-ae9:10.150.100.000 200.200.87.8 |37027 fje7hxh7yKCGZcEQOnPOafQ 
    2019-06-04-07.38.09.966000  INFO 65a8fe79:16a8d792e10:-d36:10.150.100.000 200.200.87.8 |37029 3hesLFH1cySQ1so0YSmShbV    
    2019-06-04-07.38.09.966000  INFO 2d5bb9b6:16a8d794bd9:-ae8:10.150.100.000 200.200.87.8 |37028 SykkGWSrAXh8yUG

, а остальные имеют этот формат:

2019-06-05 00:28:50,548 DEBUG [site.aq.application.object.context.DataContextFactoryImpl] - [Criado o DataContext com -389:192.193.10.250]
2019-06-05 00:28:50,550 INFO [site.aq.application.object.context.DataContextFactoryImpl] - [CacheableRegraUserAgentService:  countFail=8, matchRate=0.6]
2019-06-05 00:28:50,554 DEBUG [site.aq.application.object.context.DataContextFactoryImpl] - [Liberado o dataContext com ID 2d5bb9b6:16a8d794bd9:-389:192.193.46.200]
2019-06-05 07:20:04,628 DEBUG [site.aq.application.object.context.DataContextFactoryImpl] - [Criado o DataContext com ID65a8fe79:16a8d792e10:-5e8:192.300.46.200]

Я начинающий и с поиском примеров я делаю это:

Iпопробуйте написать это:

Создайте файл "lista-log.awk"

#!/usr/bin/gawk -f
BEGIN {
    starttime = mktime(starttime)
    endtime = mktime(endtime)
}

func in_range(n, start, end) {
    return start <= n && n < end
}

match($0, /^([0-9]{4})-([0-9]{2})-([0-9]{2})\s/, m) && 
    in_range(mktime(m[1] " " m[2] " " m[3] " 00 00 00"), starttime, endtime)

и на Promtp я пишу, например:

./lista-log.awk -v starttime='2019 06 05 00 00 00' -v endtime='2019 06 05 04 39 00' arquivo.log.txt

, но я думаю, чтокак будто он не понимает, что это час / дата, почему бы не повторить ничего

1 Ответ

3 голосов
/ 05 июня 2019

Приятно то, что у вас есть дата-время в сортируемом формате.Поэтому все, что вам нужно сделать, это написать следующую строку awk:

awk -v tStart="2019-05-31-01.02.03.000000" -v tEnd="2019-06-01-21.02.03.000000" \
    '($1 >= tStart) && ($1 < tEnd)' file 
...