此任务类似于this one,但在我的情况下,我想反过来说。 所以说我们有输入:
[
{
"name": "John",
"email": "john@company.com"
},
{
"name": "Brad",
"email": "brad@company.com"
}
]
并且所需的输出是:
{
"name": "John",
"email": "john@company.com"
}
{
"name": "Brad",
"email": "brad@company.com"
}
我尝试编写一个bash函数,它将在循环中执行:
#!/bin/bash
json=`cat $1`
length=`echo $json | jq '. | length'`
for (( i=0; i<$length ; i++ ))
do
echo $json | jq ".[$i]"
done
但显然极其缓慢......
有什么方法可以更好地使用jq
吗?
答案 0 :(得分:1)
您可以使用:
jq '.[]' file
如果使用.[index]
语法,但完全省略索引,则会返回数组的所有元素。
<强>测试强>
$ jq '.[]' file
{
"email": "john@company.com",
"name": "John"
}
{
"email": "brad@company.com",
"name": "Brad"
}
答案 1 :(得分:1)
你可以申请“。[]”过滤器。
本教程内容非常丰富 https://stedolan.github.io/jq/tutorial/