如何将经jq按stickyType分组后的curl响应格式化输出为分组名搭配带序号内容的格式?
如何将分组后的JSON格式化为指定文本格式?
我已通过命令
curl <url> | jq 'group_by(.stickyType)'将curl响应按stickyType字段进行分组,分组后的输出结果为:[ [ { "stickyType": "TypeA", "content": "X" }, { "stickyType": "TypeA", "content": "Y" } ], [ { "stickyType": "TypeB", "content": "Z" } ] ]现需将该分组结果格式化输出为如下指定格式:
TypeA 1. X 2. Y TypeB 1. Z,请问应如何实现这一需求?
没问题,你可以直接在现有jq命令的基础上扩展处理逻辑,就能得到想要的格式化结果。试试下面这条完整命令:
curl <url> | jq -r 'group_by(.stickyType)[] | .[0].stickyType + " " + (map(.content) | to_entries | map("\(.key+1). \(.value)") | join(" "))' | tr '\n' ' '
我来拆解一下这段命令的逻辑:
group_by(.stickyType)[]:遍历group_by生成的每个分组数组. [0].stickyType:提取当前分组的类型标识(同一组内的stickyType值都相同,取第一个元素的即可)map(.content):把分组里所有对象的content字段提取出来,形成内容数组to_entries:将内容数组转换成带索引的键值对结构,方便添加序号map("\(.key+1). \(.value)"):把索引加1(让序号从1开始),并格式成1. X这样的字符串join(" "):把同组的序号内容用空格拼接起来- 最后的
tr '\n' ' ':把每个分组单独输出的换行符替换成空格,让所有结果连成一整行
内容的提问来源于stack exchange,提问作者Pranali
相关产品推荐
相关产品推荐

