利用awk筛选给定时间范围内的日志

文章目录

筛选给定时间范围内的日志

时间

时间的表示方法:

  • 时间戳
  • 系统时间(年月日时间)

时间戳

什么是时间戳?

​ 时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

查看当前的时间戳

复制代码
date +%s

系统时间

​ 一般说来就是我们执行 date命令看到的时间,linux系统下所有的时间调用都是使用的这个时间。

​ 组成部分:主要由年月日时分秒,以及时区组成

查看当前时间

复制代码
date

筛选日志时间示例

简单示例

grep/sed/awk用正则去筛选日志时,如果要精确到小时、分钟、秒,则非常难以实现。

但是awk提供了mktime()函数,它可以将时间转换成epoch时间值。

mktime()函数是什么

mktime()函数返回自 1970 年 1 月 1 日以来持续时间的秒数(也就是可以返回到指定时间的时间戳)。如果发生错误,则返回 -1 值。

使用格式:

复制代码
#将时间段以空格分隔
mktime("year month day hour minute second")

示例:

复制代码
#2023-08-05 20:37:17转换成epoch为1970-01-01 00:00:00
[root@master /]# awk 'BEGIN{print mktime("2023 08 05 20 37 17")}'
1691282237

进阶示例

strptime2()实现的是将08/Nov/2023:03:42:40+08:00格式的字符串转换成epoch值,然后和which_time比较大小即可筛选出精确到秒的日志。

复制代码
BEGIN{
  # 要筛选什么时间的日志,将其时间构建成epoch值
  which_time = mktime("2023 11 08 03 42 40")
}

{
  # 取出日志中的日期时间字符串部分
  match($0,"^.*\\[(.*)\\].*",arr)
  
  # 将日期时间字符串转换为epoch值
  tmp_time = strptime2(arr[1])
  
  # 通过比较epoch值来比较时间大小
  if(tmp_time > which_time){
    print 
  }
}

# 构建的时间字符串格式为:"08/Nov/2023:03:42:40+08:00"
function strptime2(str,dt_str,arr,Y,M,D,H,m,S) {
  dt_str = gensub("[/:+]"," ","g",str)
  split(dt_str,arr," ")
  Y=arr[3]
  M=mon_map(arr[2])
  D=arr[1]
  H=arr[4]
  m=arr[5]
  S=arr[6]
  return mktime(sprintf("%s %s %s %s %s %s",Y,M,D,H,m,S))
}

function mon_map(str,mons){
  mons["Jan"]=1
  mons["Feb"]=2
  mons["Mar"]=3
  mons["Apr"]=4
  mons["May"]=5
  mons["Jun"]=6
  mons["Jul"]=7
  mons["Aug"]=8
  mons["Sep"]=9
  mons["Oct"]=10
  mons["Nov"]=11
  mons["Dec"]=12
  return mons[str]
}

示例:

1、准备一个需要筛选时间的日志

2、编写筛选时间的awk文件

3、执行awk命令

命令格式:

复制代码
awk -f 脚本文件 需要读取的文件 

这样就筛选出来了11月8号前的日志了

相关推荐
wanhengidc1 小时前
云手机的安全保护措施有哪些?
运维·服务器·安全·游戏·智能手机·云计算
岛屿旅人1 小时前
智库报告美国如何打网络战
网络·人工智能·安全·web安全
newxtc4 小时前
【广州公共资源交易-注册安全分析报告-无验证方式导致安全隐患】
开发语言·selenium·安全·yolo
网安INF5 小时前
网络攻防技术:拒绝服务攻击
网络·安全·web安全·网络安全
躺平的赶海人5 小时前
C# Dictionary 线程安全指南:多线程下操作 Dictionary<string, DateTime> 的加锁策略
java·安全·c#
GIS数据转换器6 小时前
2025无人机在农业生态中的应用实践
大数据·网络·人工智能·安全·无人机
广州华锐视点6 小时前
火电厂VR安全培训系统有哪些:广州华锐互动构建 “安全元宇宙” 生态
安全·vr
胡八一8 小时前
30 分钟上手 exp4j:在 Java 中安全、灵活地计算数学表达式
java·开发语言·安全
馨谙9 小时前
SSH密钥认证:从密码到密钥的安全升级指南
运维·安全·ssh
智驱力人工智能11 小时前
疲劳驾驶检测提升驾驶安全 疲劳行为检测 驾驶员疲劳检测系统 疲劳检测系统价格
人工智能·安全·目标检测·目标跟踪·视觉检测