введите группу печати один раз и все значения в оболочке

#json #group-by #jq

Вопрос:

Я сгруппировал ответ curl stickyType , используя следующую команду :

curl <url> | jq 'group_by(.stickyType)' что дало следующий результат:

 [
  [
    {
      "stickyType": "TypeA",
      "content": "X",
    },
    {
      "stickyType": "TypeA",
      "content": "Y",
    }
  ],
  [
    {
      "stickyType": "TypeB",
      "content": "Z",
    }
  ]
]
 

Теперь я хочу напечатать его как:

 TypeA
1. X
2. Y

TypeB
1. Z
 

Как я могу это сделать ?

Комментарии:

1. нумерация не требуется.

2. Не могли бы вы поделиться всем json?

Ответ №1:

Предполагая, что показанный пример JSON был исправлен и что вы используете параметр командной строки-r:

  • Без нумерации
     .[] | (.[0]|.stickyType), (.[] | .content)
 
  • С нумерацией:
     .[] | (.[0]|.stickyType), (range(0;length) as $i | "($i). (.[$i].content)")
 

Вы могли бы, например, добавить любой из них в свой конвейер jq.