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

相关推荐
迎仔1 小时前
11-云网络与混合云运维:弹性数字世界的交通管理
网络·安全·web安全
pitch_dark2 小时前
渗透测试系统基础篇——kali系统
网络·安全·web安全
世界尽头与你2 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
ん贤2 小时前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁
独行soc2 小时前
2026年渗透测试面试题总结-20(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
翼龙云_cloud2 小时前
阿里云渠道商:阿里云 ECS 从安全组到云防火墙的实战防护指南
安全·阿里云·云计算
程序猿阿伟2 小时前
《TypeScript中Protobuf到运行时类型安全的转换指南》
javascript·安全·typescript
小白电脑技术2 小时前
飞牛漏洞焦虑?别瞎折腾WAF了!用Lucky五步搞定“防爬墙”
服务器·网络·安全
一战成名9962 小时前
深度解析 CANN 模型转换工具链:从 ONNX 到 OM
人工智能·学习·安全·开源
轻造科技2 小时前
工艺变更管理系统+版本控制:旧工艺自动作废,避免新旧版本混用
安全·mes系统·轻造科技