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

相关推荐
星幻元宇VR1 小时前
VR雷霆双翼助力航空航天科普教育
科技·学习·安全·vr
jimy11 小时前
Oracle的oci实例vm.standard.e2.1.micro安装tailscale
服务器·安全·oracle
2301_780789661 小时前
DDOS防护的常见误区与解决方案
网络·安全·web安全·架构·ddos
FairGuard手游加固1 小时前
FairGuard原生兼容 Google Play AIP,助力游戏安全稳定出海
安全·游戏
星幻元宇VR2 小时前
5D球幕飞行影院|沉浸式科技体验引领文旅与科普新方向
科技·学习·安全·虚拟现实
隔窗听雨眠2 小时前
Chrome 安全机制深度解析
前端·chrome·安全
暗流者2 小时前
iscc2026 pwn4(test)题解
安全·web安全
alxraves2 小时前
超声诊断图像的关键算法概述
算法·安全·健康医疗·制造·信号处理
skilllite作者2 小时前
GEO 是什么:从搜索引擎到「对话式答案」的信息可见性
java·前端·笔记·安全·搜索引擎·agentskills
jimy12 小时前
Oracle的VM.Standard.E2.1.Micro虚拟机创建后,必要的安全设置,卸snap省内存
服务器·安全