利用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号前的日志了

相关推荐
Han.miracle28 分钟前
Java的多线程——多线程(3)线程安全
java·开发语言·jvm·学习·安全·线程·多线程
物联网软硬件开发-轨物科技1 小时前
【轨物方案】轨物科技低压综保智慧运维方案:以AIoT重塑电气安全与能效新范式
运维·科技·安全
jenchoi4136 小时前
【2025-11-04】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
安全·web安全·网络安全
电鱼智能的电小鱼8 小时前
基于电鱼 AI 工控机的智慧工地视频智能分析方案——边缘端AI检测,实现无人值守下的实时安全预警
网络·人工智能·嵌入式硬件·算法·安全·音视频
kali-Myon12 小时前
NewStarCTF2025-Week4-Web
sql·安全·web安全·php·ctf·ssti·ssrf
一袋米扛几楼9814 小时前
【软件安全】什么是XSS(Cross-Site Scripting,跨站脚本)?
前端·安全·xss
倔强的石头10615 小时前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库·mysql·安全·金仓数据库
key0615 小时前
量子隐写术演进
安全
挨踢攻城16 小时前
项目实战 | 新建校区网络安全项目:从搭建到交付
安全·web安全·公众号:厦门微思网络·华为网络安全项目·项目实战案例·网络安全项目·新建校区网络安全项目
我就是一粒沙19 小时前
网络安全培训
网络·安全·web安全