Команда BASH JQ - PullRequest
       38

Команда BASH JQ

0 голосов
/ 26 сентября 2018

Предположим, у меня есть следующий json в файле ver.json:

[{"id":"123","product":13038},{"id":"456","product":1212}]

Почему, когда я применяю команду "jq", я получаю этот результат?

jq -r '(.[].id|tostring) + "," + (.[].product|tostring)' ver.json

123,13038
456,13038
123,1212
456,1212

Это будетбудь правильным ответом:

123,13038
456,1212

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Или более компактно:

$ jq -r '.[] | "\(.id),\(.product)"'
123,13038
456,1212

Также стоит отметить, что @csv сохраняет типы:

$ jq -r '.[] | [.id,.product] | @csv'
"123",13038
"456",1212
0 голосов
/ 26 сентября 2018

Это немного грязно.Поскольку вы дважды обматываете и соединяете, вы получаете декартово произведение.

Вместо трубы .[] один раз для двух разных скобок:

~$ jq -r '.[] | (.id | tostring) + "," + (.product | tostring)' ver.json
123,13038
456,1212
...