文章目录

  • 一、什么是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 字符串)相关推荐

  1. linux命令下jq的用法简介

    jq简介 jq可以对json数据进行分片.过滤.映射和转换,和sed.awk.grep等命令一样,都可以让你轻松地把玩文本.它能轻松地把你拥有的数据转换成你期望的格式,而且需要写的程序通常也比你期望的 ...

  2. 在html中怎么格式化输出json字符串

    背景: 主要是为了方便观看. 步骤: 1.在html页面中输入下面的标签,必须是在pre标签内输出格式才会生效: <pre id="songReqJson"></ ...

  3. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国

    我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...

  4. linux下tail命令的用法,在Linux命令中tail的用法

    linux中的tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保你看到最新的档案 ...

  5. linux服务器返回json,Linux 命令行工具解析和格式化输出 JSON的方法

    JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otat ...

  6. Linux系统下的硬盘分区、格式化与挂载

    以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考内容 分区是什么意思_360问答 磁盘分区_360百科 挂载_360百科 fdisk对一个块设备进行分区_XZY028的博客-CSDN博客_ ...

  7. Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法

    本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: ...

  8. 如何在Linux命令行中替换多个文件中的字符串

    本文翻译自:How to replace a string in multiple files in linux command line I need to replace a string in ...

  9. 在PostgreSQL命令行psql里格式化输出json字段

    为什么80%的码农都做不了架构师?>>>    在pgsql的psql命令里直接select输出json字段是一长串字符,这对阅读非常不友好,查了好久也没查到pgsql有格式化输出j ...

最新文章

  1. 27年前被Nature拒稿,如今斩获诺贝尔奖!学术投稿模式再引热议:都有神奇的评审2...
  2. mysql model only_full_group_by_MySql版本问题sql_mode=only_full_group_by的完美解决方案
  3. HD 1003 Max Sum(贪心)
  4. [转] 更新Flash CS6发布设置的目标播放器版本
  5. 2022年薪百万赛道:高性能神经网络与AI芯片应用
  6. String被设计成不可变和不能被继承的原因
  7. ios cannot use “@throw“ with objective-c exceptions disabled 问题解决方案
  8. [Angularjs]视图和路由(四)
  9. 二.hadoop环境搭建
  10. 智能家居规模发展尚需时日
  11. SSM环境+jquery+ajax 实现批量文件上传并预览后,同时上传文件和数据 校验图片后缀是否合法 文件大小是否超限
  12. 浙江工业大学python试卷_20浙江工业大学计算机专硕考研经验贴
  13. 学海无涯——人工智能应用实例之写作软件的基本概念
  14. [Python黑帽] 二.Python能做什么攻击?正则表达式、网络爬虫和套接字通信入门
  15. Re-ranking Person Re-identification with k-reciprocal Encoding
  16. SAP中销售订单中的条件类型修改控制问题配置分析
  17. r语言 新增一列数字类型_R语言实战(2)——创建数据集【学习分享】
  18. 敲一万小时的代码可以成为大牛吗?
  19. 简单三步快速实现内网穿透
  20. Google Play In-app Billing

热门文章

  1. 紫外可见分光光度计 | 探索光的工具 | 详解
  2. 基本回路系统和基本割集系统
  3. C# 关于dgv中DataGridViewComboBoxCell触发事件
  4. Java剑 VS .NET刀 -- 晨袭血战(论模式)(一)【推荐】
  5. 深入浅出学算法008-韩信点兵
  6. 零信任网络ZTNA及SDP概念理解 身份认证 安当加密
  7. Python中的对象赋值和浅拷贝,深拷贝
  8. 大恒相机Python版Qt界面(二)
  9. Git 使用的一些命令以及Git commit 注释格式
  10. 折半查找并插入(在一个有序数组中通过二分查找数字,若存在,指出其是数组中第几个元素;反之插入数组并有序化)