前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jq命令 - json文本处理

jq命令 - json文本处理

作者头像
十毛
发布2021-11-24 13:29:11
6320
发布2021-11-24 13:29:11
举报

jq可以对json数据进行分片、过滤、映射和转换

安装

代码语言:javascript
复制
#CentOS
yum install jq

#MacOS
brew install jq

提取信息

代码语言:javascript
复制
cat json.txt
[{"genre":"deep house"}, {"genre": "progressive house"}, {"genre": "dubstep"}]
  • 格式化展示原文
代码语言:javascript
复制
cat json.txt | jq '.' 
代码语言:javascript
复制
[
  {
    "genre": "deep house"
  },
  {
    "genre": "progressive house"
  },
  {
    "genre": "dubstep"
  }
]
  • 输出数组中的元素,可以使用[index]
代码语言:javascript
复制
cat json.txt | jq '.[0]'
代码语言:javascript
复制
{
  "genre": "deep house"
}
  • 输出对象的一个字段
代码语言:javascript
复制
jq '.[0].genre' json.txt
代码语言:javascript
复制
"deep house"

数据转换

  • 过滤字段
代码语言:javascript
复制
cat json.txt| jq -c '[.[] | {"name", "age"}]'
[{"name":"tenmao","age":100},{"name":"tencent","age":null}]
  • 根据KV的值过滤值
代码语言:javascript
复制
cat json.txt| jq -c 'map(select(.name == "tenmao"))'
[{"genre":"deep house","name":"tenmao","age":100}]
  • 增加字段
代码语言:javascript
复制
# 使用map: 映射, 其中.号表示原文, + 表示merge信息
# if then else end是逻辑语句
cat json.txt| jq -c 'map(if .name == "tenmao" then . + {hobby: "baskball"} else . end)'
[{"genre":"deep house","name":"tenmao","age":100,"hobby":"baskball"},{"genre":"progressive house","name":"tencent"}]

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021/10/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 提取信息
  • 数据转换
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档