[英]How to extract log using bash script between a date / time and another
有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
但是我認為他好像不明白這是一個小時/日期,為什么不放棄任何內容
您的好處是日期時間是一種可排序的格式。 因此,您所需要做的就是編寫以下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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.