有3个日志文件,需要通过bash提取一个句点,但是它不能将文件标识为日期/时间。 谁能帮助我使用sed或awk甚至grep的脚本如何从YYYY / MM / DD HH:MM:ss到YYYY / MM / DD HH:MM:ss的日志?
我的日志文件生成如下:
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]
我很满意,并通过例行搜索来做到这一点:
我尝试这样写:
创建文件“ 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
但是我认为这似乎是他不了解这是一个小时/日期,为什么不放弃任何内容
答案 0 :(得分:3)
您的好处是日期时间是一种可排序的格式。因此,您所需要做的就是编写以下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