Исключить поля массива JSON для указанных значений - PullRequest
0 голосов
/ 29 июня 2018

Допустим, я хочу извлечь CSV с определенными полями из большого json файла, сгенерированного из API ... все интересующее находится внутри массива.

jq -r ".array[] | [.uniqV,.V1,.V2,.V3] | @csv" something.json

... но если уникальное значение начинается с определенной строки (скажем, BAD-), я хочу полностью исключить член массива. Я мог бы сделать что-то вроде этого ...

jq -r ".array[] | [.uniqV,.v1,.v2,.v3] | @csv" something.json | egrep -v ^\"BAD-

... но было бы лучше / эффективнее исключить этот шаблон из самого jq. Как это могло быть достигнуто?

1 Ответ

0 голосов
/ 29 июня 2018

Отфильтруйте записи из .array перед построением массива, переданного в @csv.

jq -r '.array[] | 
         select(.uniqV | startswith("BAD-") | not) |
         [.uniqV, .v1, .v2, .v3] |
         @csv' something.json
...