Shell脚本编程——利用jq解析json文件

问题背景

       有一个关于疫情数据的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."

猜你喜欢

转载自blog.csdn.net/qq_42968686/article/details/105898380
今日推荐