让我们说我们有这种JSON文件:
{
...
"quotes":{
"SOMETHING":10,
...
"SOMETHING_ELSE":120.4,
...
} }
如何获取这些值并使用它们将它们组合在一起?
我能做到这一点吗?
#!/bin/bash
#code ...
echo "$SOMETHING + $SOMETHING_ELSE" | bc
#code ...
#exit
我将使用wget命令获取JSON文件。我想要的只是这个文件的内容。
你能帮助我吗?我是shell编程的初学者。答案 0 :(得分:3)
我通常使用jq,一个非常快的json解析器来做这种事情(因为使用像awk
或sed
这样的工具解析json文件真的很容易出错) 。
给定一个像这样的输入文件:
# file: input.json
{
"quotes":{
"SOMETHING":10,
"SOMETHING_ELSE":120.4
}
}
您可以使用简单的过滤器获取2个字段的总和:
jq '.quotes.SOMETHING + .quotes.SOMETHING_ELSE' input.json
# output -> 130.4
注意:jq
在每个主要的Linux发行版中都可用。在debian-derivative系统中,您可以使用sudo apt-get install jq
安装。
答案 1 :(得分:0)
这将打印出所选行的浮点数的总和。
#!/bin/bash
awk '{ if ($1 ~ /"SOMETHING":/) {print}; if ($1 ~ /"SOMETHING_ELSE":/) {print} }' $1 | cut -d: -f2 | cut -d, -f1 | awk '{s+=$1};END{print s}'
这会找到您想要的行,删除数字并添加它们。
答案 2 :(得分:0)
如Read the json data in shell script所示,您应该查看并了解jq
。
像awk和sed这样的“普通”shell安装中的工具几十年来都在JSON之前,并且非常糟糕。 jq
值得花时间学习。
或者改用Python。