linux命令下jq的用法(curl 格式化输出json 字符串)
文章目录
- 一、什么是jq命令
- 1. jq安装
- 2. jq命令的格式
- 从json文件 对象数组中取出一组特定的属性的值
- 从json文件 对象数组中取出一组特定的属性的值,并排除null值
- 格式化输出json 字符串
一、什么是jq命令
官网下载: https://stedolan.github.io/jq/download/
jq可以对json数据进行分片、过滤、映射和转换,和sed、awk、grep等命令一样,都可以让你轻松地把玩文本。它能轻松地把你拥有的数据转换成你期望的格式,而且需要写的程序通常也比你期望的更加简短。
jq是用C编写,没有运行时依赖,所以几乎可以运行在任何系统上。预编译的二进制文件可以直接在Linux、OS X和windows系统上运行,当然在linux和OS X系统你需要赋与其可执行权限;在linux系统中也可以直接用yum安装。
jq常用在从json中解析出过滤出自己想要的属性值、格式化json字符串输出。
1. jq安装
centos yum安装
yum install jq
Ubuntu可以直接用apt安装
sudo apt-get install jq
2. 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文件 对象数组中取出一组特定的属性的值
举例:
从json文件 对象数组中取出一组特定的属性的值。
[root@VM_0_14_centos ~]# jq -r '.[].rustc_target_feature' < "./rustc-target-features-optimized.json"
+adx
+sha
+sse2
+avx2
+avx
+sse4.2
+sse4.1
[root@VM_0_14_centos ~]#
rustc-target-features-optimized.json文件内容:
[{"rustc_target_feature": "+adx","check_cpu_for_feature": "adx"},{"rustc_target_feature": "+sha","check_cpu_for_feature": null},{"rustc_target_feature": "+sse2","check_cpu_for_feature": "sse2"},{"rustc_target_feature": "+avx2","check_cpu_for_feature": "avx2"},{"rustc_target_feature": "+avx","check_cpu_for_feature": "avx"},{"rustc_target_feature": "+sse4.2","check_cpu_for_feature": "sse4_2"},{"rustc_target_feature": "+sse4.1","check_cpu_for_feature": "sse4_1"}
]
在shell 脚本 中,我们可以执行结果 复制给某个变量。例如:
optimized_release_rustc_target_features=$(jq -r '.[].rustc_target_feature' < "./rustc-target-features-optimized.json")
它的结果如下,就是你的jq执行结果字符串,使用单引号括起来。
optimized_release_rustc_target_features='+adx
+sha
+sse2
+avx2
+avx
sse4.2
+sse4.1'
从json文件 对象数组中取出一组特定的属性的值,并排除null值
举例: 从json文件 对象数组中取出一组特定的属性的值,并排除值是null的
如下,json还是刚才的json文件,我们这次取的是 check_cpu_for_feature 属性的值 通过 | select(. != null)’ 排除了一个值为null值。
cpu_features_required_for_optimized_release=$(jq -r '.[].check_cpu_for_feature | select(. != null)' < "./rustc-target-features-optimized.json")
结果如下:
cpu_features_required_for_optimized_release='adx
sse2
avx2
avx
sse4_2
sse4_1'
格式化输出json 字符串
[root@VM_0_14_centos ~]# echo '{"name":"she","age":20}' |jq
{"name": "she","age": 20
}
[root@VM_0_14_centos ~]#
linux命令下jq的用法(curl 格式化输出json 字符串)相关推荐
- linux命令下jq的用法简介
jq简介 jq可以对json数据进行分片.过滤.映射和转换,和sed.awk.grep等命令一样,都可以让你轻松地把玩文本.它能轻松地把你拥有的数据转换成你期望的格式,而且需要写的程序通常也比你期望的 ...
- 在html中怎么格式化输出json字符串
背景: 主要是为了方便观看. 步骤: 1.在html页面中输入下面的标签,必须是在pre标签内输出格式才会生效: <pre id="songReqJson"></ ...
- jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...
- linux下tail命令的用法,在Linux命令中tail的用法
linux中的tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保你看到最新的档案 ...
- linux服务器返回json,Linux 命令行工具解析和格式化输出 JSON的方法
JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otat ...
- Linux系统下的硬盘分区、格式化与挂载
以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考内容 分区是什么意思_360问答 磁盘分区_360百科 挂载_360百科 fdisk对一个块设备进行分区_XZY028的博客-CSDN博客_ ...
- Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法
本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: ...
- 如何在Linux命令行中替换多个文件中的字符串
本文翻译自:How to replace a string in multiple files in linux command line I need to replace a string in ...
- 在PostgreSQL命令行psql里格式化输出json字段
为什么80%的码农都做不了架构师?>>> 在pgsql的psql命令里直接select输出json字段是一长串字符,这对阅读非常不友好,查了好久也没查到pgsql有格式化输出j ...
最新文章
- 27年前被Nature拒稿,如今斩获诺贝尔奖!学术投稿模式再引热议:都有神奇的评审2...
- mysql model only_full_group_by_MySql版本问题sql_mode=only_full_group_by的完美解决方案
- HD 1003 Max Sum(贪心)
- [转] 更新Flash CS6发布设置的目标播放器版本
- 2022年薪百万赛道:高性能神经网络与AI芯片应用
- String被设计成不可变和不能被继承的原因
- ios cannot use “@throw“ with objective-c exceptions disabled 问题解决方案
- [Angularjs]视图和路由(四)
- 二.hadoop环境搭建
- 智能家居规模发展尚需时日
- SSM环境+jquery+ajax 实现批量文件上传并预览后,同时上传文件和数据 校验图片后缀是否合法 文件大小是否超限
- 浙江工业大学python试卷_20浙江工业大学计算机专硕考研经验贴
- 学海无涯——人工智能应用实例之写作软件的基本概念
- [Python黑帽] 二.Python能做什么攻击?正则表达式、网络爬虫和套接字通信入门
- Re-ranking Person Re-identification with k-reciprocal Encoding
- SAP中销售订单中的条件类型修改控制问题配置分析
- r语言 新增一列数字类型_R语言实战(2)——创建数据集【学习分享】
- 敲一万小时的代码可以成为大牛吗?
- 简单三步快速实现内网穿透
- Google Play In-app Billing
热门文章
- 紫外可见分光光度计 | 探索光的工具 | 详解
- 基本回路系统和基本割集系统
- C# 关于dgv中DataGridViewComboBoxCell触发事件
- Java剑 VS .NET刀 -- 晨袭血战(论模式)(一)【推荐】
- 深入浅出学算法008-韩信点兵
- 零信任网络ZTNA及SDP概念理解 身份认证 安当加密
- Python中的对象赋值和浅拷贝,深拷贝
- 大恒相机Python版Qt界面(二)
- Git 使用的一些命令以及Git commit 注释格式
- 折半查找并插入(在一个有序数组中通过二分查找数字,若存在,指出其是数组中第几个元素;反之插入数组并有序化)