概述
文章目录
- 一、什么是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的用法(curl 格式化输出json 字符串)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复