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

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

相关文章:

  • 【线上故障排查】系统缓存雪崩故障排查与解决全流程解析
  • 谷云科技发布业内首份 Oracle OSB 迁移到 iPaaS 技术白皮书
  • VMware Workstation虚拟系统设置双网口
  • MacOs 安装局域网 gitlab 记录
  • 进阶智能体实战九、图文需求分析助手(ChatGpt多模态版)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
  • 【UE5 C++】绘制地表贴合线
  • 十一、【核心功能篇】测试用例管理:设计用例新增编辑界面
  • 【LLM应用开发】上下文记忆的解决方案(主流全面)
  • redis未授权(CVE-2022-0543)
  • C文件操作1
  • Splunk Validated Architecture (SVA):构建企业级可观测性与安全的基石
  • Cloudflare
  • ArcGIS应用指南:基于网格与OD成本矩阵的交通可达性分析
  • 虚拟化数据恢复—XenServer虚拟机虚拟磁盘文件丢失的数据恢复案例
  • day40打卡
  • 【Netty系列】Reactor 模式 2
  • CSS 渐变完全指南:从基础概念到实战案例(线性渐变/径向渐变/重复渐变)
  • Golang持续集成与自动化测试和部署
  • Xamarin劝退之踩坑笔记
  • Google car key:安全、便捷的汽车解锁新选择
  • 农家乐网站模板/百度网盘app怎么打开链接
  • 做营销网站设计/抖来查关键词搜索排名
  • 江都建设网站/网站查询
  • 政府网站建设技术服务/2023b站免费推广入口
  • 网络推广产品公司/seo搜索引擎优化价格
  • 做网站要写代码吗/推广平台排名