排除JSON数组字段以获取特定值

时间:2018-06-29 10:36:36

标签: json linux jq

比方说,我想从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 :(得分:1)

在构建输入到.array的数组之前,先过滤@csv中的记录。

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