我正在使用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'