如何解决如果字段包含特定的键值对,请提取该字段
//test.json
{
"RED":
[
{
"attr1": "aaaa","attr2": "bbbb","attr3": "cccc"
},{
"attr1": "aaaa","attr2": "dddd","attr3": "eeee"
}
],"WHITE":
[
{
"attr1": "aaaa","attr3": "eeee"
}
]
}
我想获得一个满足(key = RED && attr1 =“ aaaa” && attr2 =“ bbbb”)的值
所以我写了这样的jq命令:
jq -r 'with_entries(select([.key] | inside(["RED"]))) | .[] | .[] | select(.attr1=="aaaa") | select(.attr2=="bbbb") | .attr3' test.json
此命令运行良好。但我认为该命令有点长。 如何在不降低可读性的情况下缩短命令? (*这是我第一次使用JQ)
解决方法
您在那里不需要with_entries
或多个select
。下面的程序做同样的事情,并且要简短得多。
.RED[] | select(.attr1 == "aaaa" and .attr2 == "bbbb") .attr3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。