Linux Command jq 格式转换

简介: Linux Command jq 格式转换

Linux Command jq 格式转换

文章目录

1. 简介

jq命令可以在命令行处理json数据

2. 参数

常用选项

-c 紧凑输出json数据
-e 根据输出结果设置命令退出状态码
-s 读取所有输入到一个数组
-r 输出原始字符串,而不是一个JSON格式
-C 高亮显示
-M 单色显示
-S 排序对象
--tab 使用tab缩进 

3. 举例

紧凑输出json数据

$ jq -c . test.json
[{"lon":113.30765,"name":"广州市","code":"4401","lat":23.422825},{"lon":113.59446,"name":"韶关市","code":"4402","lat":24.80296}]

根据输出结果设置命令退出状态码

$ jq -c -e  '.[0]|{names}|.names' test.json
null
$ echo $?
1

读取所有输出到一个数组(也就是所在json数据最外层套一个数组)

$ echo '{"safd":"fsafd"}' | jq -r .
{
  "safd": "fsafd"
}
$ echo '{"safd":"fsafd"}' | jq -s .
[
  {
    "safd": "fsafd"
  }
]

输出原始字符串,而不是一个JSON格式

$ echo '{"safd":"fsafd"}' | jq  .[]
"fsafd"
$ echo '{"safd":"fsafd"}' | jq -r .[]
fsafd

单色显示

$ echo '{"safd":"fsafd"}' | jq  .
{
  "safd": "fsafd"
}
$ echo '{"safd":"fsafd"}' | jq  -M .
{
  "safd": "fsafd"
}

排序对象

$ jq . test.json 
[
  {
    "lon": 113.30765,
    "name": "广州市",
    "code": "4401",
    "lat": 23.422825
  },
  {
    "lon": 113.59446,
    "name": "韶关市",
    "code": "4402",
    "lat": 24.80296
  }
]
$ jq -S . test.json 
[
  {
    "code": "4401",
    "lat": 23.422825,
    "lon": 113.30765,
    "name": "广州市"
  },
  {
    "code": "4402",
    "lat": 24.80296,
    "lon": 113.59446,
    "name": "韶关市"
  }
]

以table缩进

$ echo '{"safd":"fsafd"}' | jq  --tab .
{
    "safd": "fsafd"
}

获取上面地理json数据里的name值

$ jq '.[]|{name}' test.json 
{
  "name": "广州市"
}
{
  "name": "韶关市"
}

获取第一个name值

$ jq '.[0]|{name}' test.json 
{
  "name": "广州市"
}

只打印出第一个map的值:

$ jq '.[0]|.[]' test.json 
113.30765
"广州市"
"4401"
23.422825

打印出一个map的name值

$ jq '.[0]|.name' test.json 
"广州市"

打印出一个map的name值并已普通字符串显示

$ jq -r '.[0]|.name' test.json 
广州市
相关文章
|
关系型数据库 MySQL Shell
【Linux命令】-bash: mysql: command not found
【Linux命令】-bash: mysql: command not found
135 0
|
4月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
JSON Linux 开发工具
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
107 0
|
6月前
|
网络协议 Linux C++
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
305 0
|
6月前
|
Linux Shell
mac/linux提示bash: telnet: command not found
mac/linux提示bash: telnet: command not found
|
Ubuntu Linux 数据库
Linux:报错“command not found: yum”及yum和apt-get的区别
Linux:报错“command not found: yum”及yum和apt-get的区别
1217 0
Linux:报错“command not found: yum”及yum和apt-get的区别
|
6月前
|
Unix Linux Shell
【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
128 0
|
消息中间件 运维 监控
Linux Command strace 调试跟踪(1)
Linux Command strace 调试跟踪(1)
Linux Command strace 调试跟踪(1)
|
Java Linux
linux配置jdk环境出现错误:/usr/libexec/grepconf.sh: line 5: grep: command not found 的解决办法
linux配置jdk环境出现错误:/usr/libexec/grepconf.sh: line 5: grep: command not found 的解决办法
295 0
|
数据挖掘 Linux 测试技术
Linux中输入所有命令都提示“command not found”,bashrc环境变量异常的解决方案
Linux中输入所有命令都提示“command not found”,bashrc环境变量异常的解决方案