问题背景
有一个关于疫情数据的json文件,现在需要统计其中Europe地区的确诊总人数
解决方案
使用shell简单的进行一下数据处理就行了,在此之前,利用jq将数据精简为地区/确诊人数,方便使用shell进行进一步的数据处理。
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格式文件。
Shell源码
#!/bin/bash
jq .results DXYArea.json | jq .[] | jq .continentEnglishName,.currentConfirmedCount > data.txt
sum=0
while read name
do
read count
if [ "$name" = "\"Europe\"" ] && [ $count -gt 1000 ]
then
#echo $name
#[ "$name"="Europe" ]
sum=`expr $sum + $count`
fi
done < data.txt
echo "Europe区currentConfirmedCount数大于1000的国家人数和是$sum."