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

Linux命令之jq命令处理JSON数据

#作者: stackofumbrella

文章目录

  • 一、jq简介
  • 二、安装jq命令
  • 三、jq命令详解
    • JSON数据类型
    • JSON基础

一、jq简介

jq是一个出色的命令行针对JSON的处理器,提供了用于查询、操作和使用JSON文件的大量功能,且作为一个命令行工具,可配合管道使用脚本处理JSON
jq可以对json数据进行分片、过滤、映射、转换和sed、awk、grep等命令一样,可以轻松地把玩文本
jq是用C编写,没有运行时依赖,所以可以运行在任何系统上

二、安装jq命令

# yum -y install jq

三、jq命令详解

jq [options] filter [files]
options

--version:输出jq的版本信息
--slurp/-s:读入整个输入流到一个数组
--raw-input/-R:不作为JSON解析,将每一行的文本作为字符串输出到屏幕
--null-input/-n:不读取任何输入,过滤器运行使用null作为输入,一般用作从头构建JSON数据
--compact-output/-c:使输出紧凑,而不是把每一个JSON对象输出在一行
--colour-output/-C:打开颜色显示
--monochrome-output/-M:关闭颜色显示
--ascii-output/-a:指定输出格式为ASCII
-raw-output/-r:如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)

filter

.:默认输出
.foo:输出指定属性,foo代表属性
.[foo]:输出指定数组元素,foo代表数组下标
.[]:输出指定数组中全部元素
,:指定多个属性作为过滤条件时用逗号分隔
|:将指定的数组元素中的某个属性作为过滤条件

files
JOSN格式文件

JSON数据类型

数据结构:object–>‘{}’、array–>‘[]’
基本类型:string、number、true、false、null -->6种
后续:null和空串的区别

  • 一个花括号{}代表一个对象–>‘object’
    特点:里面的元素必须是’key:value’以’,'隔开
    补充:对象是一个无序的’key/value’集合

  • 一个方括号[]代表一个数组–>‘array’
    特点:数组是值’的有序集合,值之间以’,'分割
    补充:值可以是"双引号"包括的string、number、true、false、null、object、arrary
    理解:‘value’是广义上的单个元素,可以通过{}、’[]'嵌套来实现复杂的数据结构
    json仅支持’UTF-8’编码且不支持注释

JSON基础

key:一般是’string’类型,用"双引号"
强调:不是单引号
补充:双引号包括的字符串能解析"\t、\n"等符号
value:任何基本类型或数据结构
细节:最后一个不要加逗号加了会出错


在这里插入图片描述
如果只想访问单个属性并将其打印输出,可以使用.字段运算符
例如要访问工人的属性可以使用以下命令
在这里插入图片描述
使用.字段运算符访问属性中存在的项目
在这里插入图片描述
使用.[ ]运算符访问和输出JSON文件中数组中存在的元素
在这里插入图片描述
使用下标索引定位输出特定的数组
在这里插入图片描述
使用.字段运算符访问数组中存在的属性,例如访问第三个数组中的name属性
在这里插入图片描述
访问数组中所有名称属性
在这里插入图片描述
使用-s把输入流数据放到一个数组[ ]内
在这里插入图片描述
在这里插入图片描述
使用-r将输出结果去掉双引号
在这里插入图片描述
数据重组成数组
在这里插入图片描述
数据重组成对象
在这里插入图片描述
管道过滤重组成新对象
在这里插入图片描述
筛选
在这里插入图片描述
计算
在这里插入图片描述
数组中每个键进行映射并做数值计算加2
在这里插入图片描述
删除json键
jq支持从JSON对象中删除键,删除后输出就不包含删除key的JSON对象。删除键使用del()函数
在这里插入图片描述
函数length
数字:返回数字值

字符串:返回字符串长度

数组:返回数组长度

map:返回元素个数
在这里插入图片描述

相关文章:

  • 【Linux】虚拟机设置静态IP
  • 【leetcode hot 100 763】划分字母区间
  • 【愚公系列】《高效使用DeepSeek》058-选题策划
  • real_time_camera_audio_display_with_animation
  • 华为OD机试2025A卷 - 正整数到excel编号之间的转换(Java Python JS C++ C )
  • 分布式微服务系统架构第97集:JVM底层原理
  • P1006 [NOIP 2008 提高组] 传纸条 题解
  • HTML5 浏览器兼容性:让旧浏览器也能拥抱 HTML5
  • 如何使用Audacity快速拆分整轨音频文件
  • 在 Ubuntu 下通过 Docker 部署 Misskey 服务器
  • 用AI来了解用户都在关注的品牌问题是什么?
  • linux 下du 和 ls-alh 的区别
  • 【JavaScript】十五、事件对象与环境对象
  • 跳跃游戏的最优解法——贪心算法的智慧与实践
  • 关于动态卷积
  • windows下GCC编译器使用FFTW预编译版共享库使用
  • 优秀的python可视化案例
  • Unity ViewportConstraint
  • 蓝桥杯 web 新鲜的蔬菜(css3)
  • javaweb自用笔记:Maven分模块设计与开发、Maven继承与聚合、Maven私服
  • 珠海舒讯网站建设/微商营销
  • 网站建设企业建站/网络促销的方法有哪些
  • 企业网站开发韵茵/常见的网络推广方式包括
  • 仓山网站建设/公司推广策划
  • 住房和城乡建设部干部学院网站/免费制作网站的软件
  • 外贸公司网站推广/微信公众号推广方法有哪些