当前位置: 首页 > article >正文

jq处理日志数据

介绍

jq 是一个轻量级且灵活的命令行 JSON 处理器。它允许你使用简单的过滤器来处理 JSON 数据,提取、操作和转换 JSON 文档。jq 是处理 JSON 数据的强大工具,特别适合在命令行环境中使用。
简单将就是:专门处理 json结构的字符串的工具

我将加入jq这个更加权威的圈子

awk在处理大批量&&简单数据的时候还是挺方便的,但是对于一些复杂的数据还是比较麻烦。
特别是现在的日志一般都是json格式,所以jq的好处就不言而喻了。

用到的命令

jq代码

 grep '"msg":"OnConstelltionHoroScop-success"' "$filename" | jq --arg ts "$min_timestamp"\-r -c 'select(.timestamp >= $ts) |.timestamp |= (split(".")[0])|[.PlayerId,.star,.timestamp]| map(tostring) | join(",")'

分析:

jq --arg ts "$min_timestamp"  # 这句代码是将 实参 $min_timestamp 传给 形参 ts 
-r -c # -r 去掉字符串引号, -c 多个字段同一行显示
select(.timestamp >= $ts)   # .timestamp就是取timestamp的值|select 作比较,选满足条件的行
= (split(".")[0]) # 去掉毫秒时间戳 
[.PlayerId,.star,.timestamp]# 取字段值合成数组
map(tostring) # 将数组转成字符串 mapjoin(",")' # 合成一个字符串,用,隔开

代码参考

#!/bin/bashfuncSearch() {local filename="$1"local min_timestamp="$2"echo  $filename,$min_timestampgrep '"msg":"OnConstelltionHoroScop-success"' "$filename" | jq --arg ts "$min_timestamp"\-r -c 'select(.timestamp >= $ts) |.timestamp |= (split(".")[0])|[.PlayerId,.star,.timestamp]| map(tostring) | join(",")'
}funcExcel() {local filename="$1"local min_timestamp="$2"echo  $filename,$min_timestampgrep '"msg":"OnConstelltionHoroScop-success"' "$filename" | jq --arg ts "$min_timestamp"\-r -c 'select(.timestamp >= $ts) |.timestamp |= (split(".")[0])|[.PlayerId,.star,.timestamp]| map(tostring) | join(",")'>>log.csv
}# 获取用户输入的天数
days=$1
current_date=$(date +"%Y-%m-%d")
end_date=$(date -d $current_date +%s)
#end_date=$(date -d "2025-06-03" +%s)
start_date=$(date -d "$current_date -$days days" +%s)search_start_date=$(date -d "$current_date -$days days" +"%Y-%m-%d")
#search_start_date="2025-05-31"# 处理带前缀的日志文件(格式:xxx-2025-05-30T02-26-06.459.log)
find ./mgActivity -name "mgActivity*.log" | while read file; do# 从带前缀的文件名提取日期部分file_date=$(basename "$file" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}')timestamp=$(date -d "$file_date" +%s 2>/dev/null)if [ -n "$timestamp" ] && [ "$timestamp" -ge "$start_date" ] && [ "$timestamp" -le "$end_date" ]; thenecho "处理文件: $file"funcExcel $file $search_start_date#        funcSearch $file $search_start_datefi
donefile="./mgActivity/mgActivity.log"
echo "处理文件: $file"
#echo "PlayerId,star,timestamp" > log.csv
funcExcel $file $search_start_date
http://www.lryc.cn/news/2395238.html

相关文章:

  • Matlab程序设计基础
  • MIT 6.S081 2020 Lab6 Copy-on-Write Fork for xv6 个人全流程
  • 第304个Vulnhub靶场演练攻略:digital world.local:FALL
  • Unity 模拟高度尺系统开发详解——实现拖动、范围限制、碰撞吸附与本地坐标轴选择
  • 万字详解RTR RTSP SDP RTCP
  • 云服务器如何自动更新系统并保持安全?
  • 训练中常见的运动强度分类
  • java 递归地复制文件夹及其所有子文件夹和文件
  • [paddle]paddle2onnx无法转换Paddle3.0.0的json格式paddle inference模型
  • React项目在ios和安卓端要做一个渐变色背景,用css不支持,可使用react-native-linear-gradient
  • 【数据分析】特征工程-特征选择
  • 第4节 Node.js NPM 使用介绍
  • RK3399 Android7.1增加应用安装白名单机制
  • uni-app 安卓消失的字符去哪里了?maxLength失效了!
  • #AI短视频制作完整教程
  • 嵌入式STM32学习——串口USART 2.0(printf重定义及串口发送)
  • 【大模型】情绪对话模型项目研发
  • Git 教程 | 如何将指定文件夹回滚到上一次或某次提交状态(命令详解)
  • 【PCI】PCI入门介绍(包含部分PCIe讲解)
  • Cloudera Manager 学习笔记
  • Deepin 23.10安装Docker
  • 使用PowerBI个人网关定时刷新数据
  • 数字人引领政务新风尚:智能设备助力政务服务
  • 深入剖析Java类加载机制:双亲委派模型的突破与实战应用
  • Kotlin JVM 注解详解
  • 将 node.js 项目作为后台进程持续运行
  • 【PhysUnits】15.5 引入P1后的标准化表示(standardization.rs)
  • MySQL-5.7 修改密码和连接访问权限
  • tauri2项目打开某个文件夹,类似于mac系统中的 open ./
  • 企业文件乱、传输慢?用群晖 NAS 构建安全高效的共享系统