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

#作者: stackofumbrella

文章目录

一、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:返回元素个数

相关推荐
专注API从业者18 小时前
告别人工盯品!借助 Open Claw 搭建电商商品自动化监控与数据分析系统(完整可运行源码)
大数据·运维·数据库·数据分析·自动化
爱喝水的鱼丶20 小时前
SAP-ABAP:ABAP 用户出口参数传递与上下文获取:SAP 标准数据读取与交互逻辑实现
运维·性能优化·交互·sap·abap·经验交流·出口
IT大白鼠20 小时前
PentestGPT作为AI运维编排工作流自动化底座的技术架构与应用价值评估
运维·人工智能·自动化·pentestgpt
M78佐菲20 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
ltl21 小时前
QUIC 协议拆解(上):为什么 TCP 改不动了
linux
j7~21 小时前
【Git】《Git 系列指南(二):Git基本操作与 reset 三种模式》
运维·git·git安装·git基本操作·git配置·创建git仓库·git reset三种模式
zzzll111121 小时前
n8n 工作流自动化平台入门指南
运维·自动化
leisoo809721 小时前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
Hrain-AI21 小时前
Anthropic oncall-kit 开源拆解:运维 Agent 落地范式的四基石与权限边界
运维·人工智能·开源
HXDGCL21 小时前
从“转盘困局”到“直线破局”:华创力科技PTS精密分度输送系统如何重塑自动化产线
运维·科技·自动化