我有一个json文件
{
"file" : {
"a" : 1,
"b" : 2
}
}
我正在使用jq
来计算此json对象中的文件值的数量。
然后在bash上使用
arr=($(cat jsonfile.json | jq '.file' | jq -r 'keys'))
echo ${#arr[@]}
这里我得到输出4,而只有2个键a,b
为什么会这样,我如何获得arr只有两个元素a
和b
。?
答案 0 :(得分:1)
要理解为什么要获得4个元素的数组,请查看子shell的输出:
cat jsonfile.json | jq '.file' | jq -r 'keys'
这会产生:
[ "a", "b" ]
每一行都会成为数组的一个元素 - > 4行。
请改为尝试:
jq -r '.file | keys | .[]' jsonfile.json
输出:
a b
我还简化了你的原始表达。 (谢谢@JeffMercado!)