Red*_*let 2 select json slice jq
假设我有以下数据:
{
"dashboards": [
{
"name": "first",
"type": "standard"
},
{
"name": "second",
"type": "custom"
}
]
}
Run Code Online (Sandbox Code Playgroud)
(实际上数据远不止于此,我只是展示数据的结构是什么)
我想做的是获取前 10 个类型为 的仪表板standard
。
我知道我可以通过以下方式获取所有仪表standard
板:
jq '.dashboards[] | select(.type == "standard")'
但我不知道如何对结果数组进行切片......
如果您希望结果作为数组,您可以使用map
:
.dashboards | map(select(.type=="standard")) | .[0:10]
Run Code Online (Sandbox Code Playgroud)
然而,这是低效的。为了提高效率,最好limit
按照下面讨论的方式使用。
如果您希望这些项目作为流,您可以编写:
limit(10; .dashboards[] | select(.type=="standard"))
Run Code Online (Sandbox Code Playgroud)
如果您希望结果为数组,只需将上面的 jq 表达式括在方括号中即可。