当前位置: 首页 > news >正文

江苏质量员证在哪个网站做的怎么建网站教程图解

江苏质量员证在哪个网站做的,怎么建网站教程图解,网站界面的版式架构,小学六年级做的网站在shell脚本中,当我们需要对JSON数据(例如ceph、kubernetes等一些命令的输出,或是调用API获得的响应)进行处理和提取时,如果使用传统的文本三剑客sed、awk和grep,命令将会非常臃肿不可读。虽然这三个命令在…

在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},{"name": "lisi","gender": "male","score": 90},{"name": "wangerma","gender": "female","score": 100}
]

这个命令可以用于检测输入是否为合格的json,例如将test.json修改为:

# cat test.json
[{ "name": "zhangsan", "gender": "male", "score": 80 },{ "name": "lisi", "gender": "male", "score": 90 },{ "name": "wangerma", "gender": "female", "score": 100 }

则命令会报错:

#  jq '.' test.json 
parse error: Unfinished JSON term at EOF at line 6, column 0

所以我们可以写如下shell作判断:

#!/bin/bash
if jq '.' test.json >/dev/null 2>&1
thenecho "valid json"
else echo "invalid json"
fi

检索键值

如果我们将需要获取所有学生的姓名列表,如下:

["zhangsan","lisi","wangerma"
]

该怎么做?为此我们需要先使用数组迭代器.[]来获取列表中每一项值:

#  jq '.[]' test.json 
{"name": "zhangsan","gender": "male","score": 80
}
{"name": "lisi","gender": "male","score": 90
}
{"name": "wangerma","gender": "female","score": 100
}

然后获取每一项输出的name键值,这里使用我们熟悉的管道符|

#  jq '.[] | .name' test.json 
"zhangsan"
"lisi"
"wangerma"

如果想要去掉输出中的双引号,可以使用-r参数输出原始字符串:

#  jq -r '.[] | .name' test.json 
zhangsan
lisi
wangerma

接下来我们可以在过滤器的最外层加上[]来讲结果转换为列表:

#  jq '[.[] | .name]' test.json 
["zhangsan","lisi","wangerma"
]

以上过滤器的表达式看起来似乎有些臃肿了,好在jq提供了map函数,因此我们可以将上述表达式替换为:

#  jq 'map(.name)' test.json 
["zhangsan","lisi","wangerma"
]

使用add函数对键值进行求和

仿照上述语法,我们可以可以获得所有学生的成绩列表:

#  jq 'map(.score)' test.json 
[80,90,100
]

同样。使用管道符|add函数,即可轻松获取所有学生的成绩总和:

#  jq 'map(.score) | add' test.json 
270

使用select获取部分键值

如果我们想要对所有男生的成绩进行求和,就需要使用select(condition)函数了,所有conditiontrue的输入会被保留,false则会被丢弃,如我们获取所有性别为男的数据gender == "male"

#  jq 'map(select(.gender == "male"))' test.json 
[{"name": "zhangsan","gender": "male","score": 80},{"name": "lisi","gender": "male","score": 90}
]

进一步获取所有男生的分数:

#  jq 'map(select(.gender == "male").score)' test.json 
[80,90
]

最后求和:

#  jq 'map(select(.gender == "male").score) | add' test.json 
170

将输入转换为新的格式输出

如果我们想将上述步骤中的输出合并为一个新的json数据并输出,则可以使用如下方式进行格式化输出:

#  jq '{ students: map(.name), totalscore: map(.score) | add, totalmalescore: map(select(.gender == "male").score) | add }' test.json 
{"students": ["zhangsan","lisi","wangerma"],"totalscore": 270,"totalmalescore": 170
}

总结

在shell脚本中处理json数据,jq命令是个很好的选择。

本教程将对这个命令的用法只进行了简单入门介绍,如需了解详细语法,可以参看官方文档:https://jqlang.github.io/jq/manual/

http://www.ds6.com.cn/news/43494.html

相关文章:

  • 做微信支付的网站多少钱百度企业推广怎么收费
  • 一般做网站空间大概多少钱企业员工培训内容及计划
  • 服装织梦网站源码企业品牌推广策划方案
  • 6成都网站建设百度收录批量查询工具
  • 做网站点击率赚钱谷歌seo排名优化服务
  • 宝坻建设委员会网站防城港网站seo
  • 学网站开发去哪学青青河边草直播免费观看
  • 网站做的是哪方面的内容百度网络营销中心
  • 长沙行业网站建设费用标准网上商城网站开发
  • 龙岗网站制作资讯自媒体平台注册入口官网
  • 徐州经济开发区网站淘宝推广平台
  • 沂源放心企业网站建设方案报价安徽网站建设优化推广
  • 温州微信网站开发怎样做网站
  • 建设网站jw100成都网站关键词排名
  • 如何不备案建网站seo推广软件品牌
  • 网站打包app互联网营销师培训
  • php网站的开发背景跨境电商平台有哪些
  • 菏泽哪里做网站seo关键词优化软件app
  • h5页面制作软件thinkphp湖南企业竞价优化服务
  • 卖灯杆的做网站好网络营销的四种形式
  • 做淘宝网站如何提取中间的提成宁波seo快速优化公司
  • 做网站是干嘛seo网络优化
  • 俄罗斯在线 网站制作有道搜索引擎入口
  • 网站如何做搜索引擎优化刷百度关键词排名
  • 推荐一个免费的网站杭州seo教程
  • 淘宝网站建设与规划上海企业网站推广
  • 哈尔滨+做网站公司有哪些公司推广宣传文案
  • 拿别的公司名字做网站自己做网站需要多少钱
  • 什么叫网站权重关键词工具
  • 做实体上什么网站找项目凡科网站建站教程