在shell脚本中,当我们需要对JSON数据(例如ceph、kubernetes等一些命令的输出,或是调用API获得的响应)进行处理和提取时,如果使用传统的文本三剑客sed、awk和grep,命令将会非常臃肿不可读。虽然这三个命令在处理松散结构的数据时很有用,但当面对JSON这类数据时,却显得不够优雅。
jq就是这样一个命令行工具,专门用于处理JSON数据,特别适用于shell脚本。
jq命令的使用
首先我们需要安装jq命令:yum install jq -y
创建如下的示例文件(一张学生成绩表):
# cat test.json
[
{
"name": "zhangsan", "gender": "male", "score": 80 },
{
"name": "lisi", "gender": "male", "score": 90 },
{
"name": "wangerma", "gender": "female", "score": 100 }
]
jq命令的标准语法为jq [options] <jq filter> [file...]
,最简单的过滤器为.
,它将输入原封不动地转换为输出(会做格式化、高亮),例如:
# jq '.' test.json
[
{
"name": "zhangsan",
"gender": "male",
"score": 80
}