如何使用jq对JSON解析结果按数组元素分组展示?
解决jq按数组元素分组展示字段的问题
要实现按原数组每个元素分组展示fxid和id,并在各组间添加分隔线,你可以用以下两种jq过滤器:
方式一:简单直接(最后会多一条分隔线)
直接遍历result数组的每个元素,输出对应字段后添加分隔线:
curl <你的API地址> | jq -r '.result[] | "fxid: \(.fxid)\nid: \(.id)\n---"'
.result[]:遍历数组中的每一个元素"fxid: \(.fxid)\nid: \(.id)\n---":用字符串插值拼接当前元素的fxid和id,换行后添加分隔线----r参数:让jq输出原始字符串,而非JSON格式的字符串
方式二:避免最后一条多余分隔线
如果不想在最后一组后出现分隔线,可使用reduce累加内容后去除末尾的分隔线:
curl <你的API地址> | jq -r 'reduce .result[] as $item (""; . + "fxid: \($item.fxid)\nid: \($item.id)\n---\n") | rtrimstr("---\n")'
reduce .result[] as $item (""; ...):初始化空字符串,逐个处理数组元素并累加内容rtrimstr("---\n"):移除最后累加的分隔线和换行符
内容的提问来源于stack exchange,提问作者Bravo
相关产品推荐
相关产品推荐

