jq实用程序-提取某些json块



我正在使用jq实用程序格式化curl命令的json输出。我找不到按位置提取json块的方法。也就是说,如果我只想打印最后一个json块,或者像5th、6th或5th&仅限第6位,是否有jq选项或实现此目标的方法?

JSON数组看起来像这个

[
{
"field1": "value1",
"field2": "value2",
"field3": "value3"
},
{
"field1": "value1",
"field2": "value2",
"field3": "value3"
},
{
"field1": "value1",
"field2": "value2",
"field3": "value3"
},
{
"field1": "value1",
"field2": "value2",
"field3": "value3"
}
]

最后一个:last

第五:.[4]

第六:.[5]

第5和第6(阵列(.[4:6]

第5和第6(阵列([ .[4], .[5] ]

第5和第6(作为流(.[4:6][]

第5和第6(作为流(.[4], .[5]

最后:。[-1]

第n个,其中$n在命令行上指定(基于0的索引(:jq——argjson n$n'。[$n]'

$m-th和$n-th(具有基于0的索引(:'。[$m,$n]'

伪随机选择的元素(假设是bash或类似bash的shell,并且数组不太长(:

jq --argjson prn $RANDOM '
if length > 32767 then "Sorry - this algorithm is too simplistic." | error
else .[$prn % length]
end
'  

在不假设类似bash的环境的情况下进行伪随机选择的另一种方法:

jq '
if length > 1e6 then "Sorry - this algorithm is too simplistic." | error
else 
(now|tostring|sub(".*[.]";"")|tonumber) as $n
| .[$n % length]
end'

最新更新