假设我有以下数据:
{
"dashboards": [
{
"name": "first",
"type": "standard"
},
{
"name": "second",
"type": "custom"
}
]
}
(实际上还有更多的数据,我只是在显示数据的结构)
我想做的是获取standard
类型的前10个仪表板。
我知道我可以使用以下命令来获得standard
仪表板的全部 :
jq '.dashboards[] | select(.type == "standard")'
但是我不知道如何对结果数组进行切片...
答案 0 :(得分:1)
如果您希望将结果作为数组,则最好使用map
:
.dashboards | map(select(.type=="standard")) | .[0:10]
如果要将项目作为流,可以使用内置函数limit
,例如
limit(10; .dashboards[] | select(.type=="standard"))
答案 1 :(得分:0)
这是使用基于步行路径的Unix实用程序 jtc
的另一种方法:
-我冒昧地用另外4条"type": "standard"
记录扩展了您的源JSON示例,但仅显示了前3条(出于演示目的):
bash $ <file.json jtc -r
{ "dashboards": [ { "name": "first", "type": "standard" }, { "name": "second", "type": "custom" }, { "name": "second", "type": "standard" }, { "name": "third", "type": "standard" }, { "name": "fifth", "type": "standard" } ] }
bash $
bash $
bash $ <file.json jtc -w'[type]:<standard>:3 [-1]'
{
"name": "first",
"type": "standard"
}
{
"name": "second",
"type": "standard"
}
{
"name": "third",
"type": "standard"
}
bash $
PS>披露:我是jtc
工具的创建者