如何使用jq按seconds字段值对JSON数组元素进行排序
错误原因
sort_by() 是jq中专门用于数组排序的函数,你原命令中.results[].request.path.time 遍历到的是每个结果项里独立的time对象(不是数组),对单个对象调用sort_by()自然会触发类型错误。
正确实现
如果要把results数组里的所有项按照request.path.time.seconds的值升序排序,正确命令如下:
jq '.results |= sort_by(.request.path.time.seconds)' output.json
如果需要按秒数降序排序,追加reverse方法即可:
jq '.results |= (sort_by(.request.path.time.seconds) | reverse)' output.json
命令逻辑说明
|=是jq的修改赋值运算符,这里表示对.results整个数组做修改sort_by()的参数是数组每个元素用来排序的取值路径,即每个结果项里的秒数字段路径.request.path.time.seconds- 执行后输出的JSON结构完全不变,仅
results数组的项顺序会按照秒数大小重新排列
内容的提问来源于stack exchange,提问作者ryPaul
相关产品推荐
相关产品推荐

