湘西网站建设花垣,网站建设公司代理,建站 网站程序,vs做的网站案例目录
筛选给定时间范围内的日志
时间的表示方法#xff1a;
时间戳
什么是时间戳#xff1f;
mktime
实例#xff1a;
执行awk命令 筛选给定时间范围内的日志
时间的表示方法#xff1a;
时间戳系统时间#xff08;年月日时间#xff09;
时间戳
什么是时间…目录
筛选给定时间范围内的日志
时间的表示方法
时间戳
什么是时间戳
mktime
实例
执行awk命令 筛选给定时间范围内的日志
时间的表示方法
时间戳系统时间年月日时间
时间戳
什么是时间戳
时间戳是指格林威治时间自1970年1月1日00:00:00 GMT至当前时间的总秒数。它也被称为Unix时间戳Unix Timestamp。通俗的讲时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
mktime
awk提供了mktime()函数它可以将时间转换成epoch时间值。
实例
实现将 2022-12-02T00:00:0000:00 格式的字符串转换成 epoch 值然后和 which_time 比较大小即可筛选出精确到秒的日志。
BEGIN{# 要筛选什么时间的日志将其时间构建成epoch值which_time mktime(2022 12 02 00 00 00)
}{# 取出日志中的日期时间字符串部分match($0,^.*\\[(.*)\\].*,arr)# 将日期时间字符串转换为epoch值tmp_time strptime2(arr[1])# 通过比较epoch值来比较时间大小if(tmp_time which_time){print}
}# 构建的时间字符串格式为02/Dec/2022:00:00:0008:00
function strptime2(str,dt_str,arr,Y,M,D,H,m,S) {dt_str gensub([], ,g,str)split(dt_str,arr, )Yarr[3]Mmon_map(arr[2])Darr[1]Harr[4]marr[5]Sarr[6]return mktime(sprintf(%s %s %s %s %s %s,Y,M,D,H,m,S))
}function mon_map(str,mons){mons[Jan]1mons[Feb]2mons[Mar]3mons[Apr]4mons[May]5mons[Jun]6mons[Jul]7mons[Aug]8mons[Sep]9mons[Oct]10mons[Nov]11mons[Dec]12return mons[str]
}
执行awk命令
命令格式awk -f 脚本文件 需要读取的文件
awk -f 1.awk time.log