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

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.xdnf.cn/news/10152.html

相关文章:

  • 局域网/内网IP地址配置HTTPS证书全流程指南
  • TypeScript 中高级类型 keyof 与 typeof的场景剖析。
  • [STM32问题解决(2)]STM32通过串口与PC通信,打开串口助手后无法在打开状态下下载程序和复位STM32
  • 抢占先机!品牌如何利用软文营销领跑内容营销赛道?
  • 【笔记】Windows 系统安装 Supabase CLI 完整指南(基于 Scoop)
  • 未来技术展望
  • jmeter:登录接口的token用于下一个接口
  • Co-IP—验证蛋白互作的不二之选
  • JavaSwing之--ImageImageIcon
  • ES5时代的残党(被ES6淘汰的JS写法)
  • 【Web应用】若依框架:基础篇11功能详解-系统接口
  • 聊聊网络变压器的浪涌等级标准是怎样划分的呢?
  • 强化学习笔记总结(结合论文)
  • 【知识点】第2章:Python程序实例解析
  • 玛哈特校平机深度解析:多辊弯曲的奥秘与核心部件探秘
  • Amazon Pinpoint:构建智能、全渠道的用户互动与营销解决方案
  • 进程间通信及管道(理论)
  • element上传文件多选 实现文件排序
  • 指纹识别+精准化POC攻击
  • 正点原子Z20 ZYNQ ​​​开发板​​发布!板载FMC LPC、LVDS LCD和WIFI蓝牙等接口,资料丰富!
  • It is recommended to disable TLS 1.1 and replace it with TLS 1.2 or higher.修复方案
  • LearnOpenGL-笔记-其十一
  • 突破DIFY沙箱限制,高效处理大文件
  • 人工智能在智能金融中的创新应用与未来趋势
  • 【面试】喜茶Java面试题目
  • 数学建模之最短路径问题
  • Spring Boot中使用@JsonAnyGetter和@JsonAnySetter处理动态JSON属性
  • Linux中的shell脚本
  • 基于Vite的前端自动化部署方案
  • (一)微服务(垂直AP/分布式缓存/装饰器Pattern)