Подтвердить что ты не робот

Как использовать jq для преобразования числа в строку?

Учитывая следующую команду jq и Json:

jq '.[]|[.string,.number]|join(": ")' <<< '
[
  {
    "number": 3,
    "string": "threee"
  },
  {
    "number": 7,
    "string": "seven"
  }
]
'

Я пытаюсь отформатировать вывод как:

three: 3
seven: 7

К сожалению, моя попытка приводит к следующей ошибке:

jq: ошибка: строка и номер не могут быть добавлены

Как преобразовать число в строку, чтобы оба они могли быть объединены?

4b9b3361

Ответ 1

Команда jq имеет функцию tostring. Мне потребовалось некоторое время, чтобы научиться использовать его с помощью проб и ошибок. Вот как его использовать:

jq -r '.[] | [ .string, .number|tostring ] | join(": ")' <<< '
[{ "number": 9, "string": "nine"},
 { "number": 4, "string": "four"}]
'
nine: 9
four: 4

Ответ 2

Альтернативный и, возможно, более интуитивный формат:

jq '.[] | .string + ": " + (.number|tostring)' <<< ...

Стоит отметить необходимость создания парнеров вокруг .number|tostring.