json日志分析工具: jq

上篇文章介绍了jsawk,由于一些不足,这里又发现了一个更好的工具: jq

安装:

用法:

体验一下:

 

项目主页: https://stedolan.github.io/jq/

指南: https://stedolan.github.io/jq/tutorial/

手册: https://stedolan.github.io/jq/manual/

 

字符串连接

(注意: 这里连接的是字符串,数字是不能直接当做字符串进行连接的)

类型转换:

这里通过圆括号来单独处理一部分,然后通过tostring将输出内容转换为字符串; 也可以通过 @text 实现:

join:

 

获取对象的key:

等效于

等效于:

 

过滤:(通过select 过滤出Name为default的条目,然后只显示名字和ID列)

错误的写法: (下面这个写法把Name和ID排列组合输出了)

如:

 

根据path 和 select获取感兴趣的值:

参考: https://stackoverflow.com/questions/25780807/can-i-use-a-relative-path-or-a-wildcard-in-jq

 

关联数组的key需要使用双引号,不能使用单引号:

 

修改部分值

 

在任何一个级别中查找指定字段:

 

 

构造新对象:

 

关于paths的用法: 1.3 版本中还没有paths:

这里的paths放在圆括号内,不影响输出,就好比bash中的圆括号是在单独子进程中执行一样,不影响当前的环境,同时,使用as使得圆括号的输出保存在变量中,不影响后续的输入; 这样,使得getpath所在环境中的 dot 依然是原始的输入

 

 

参考资料: https://linuxtoy.org/archives/jq.html

Extract keys using JQ

 

https://github.com/stedolan/jq/issues/885

在线测试: https://jqplay.org/jq?

注意事项:

  1. 字符串只能使用双引号,不能使用单引号
  2. if 语句必须有else, 如果其中一个分支实在没啥说的就 select(false) 相当于empty

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据