我正在尝试过滤下面的json对象,以获得没有“版主”或“所有者”域值的id,在bash script.The problem中使用jq是我的第三个域值是随机的,而不是预先确定的。如何对其进行过滤?
{
"data":[
{
"id":1,
"domain":"moderator"
},
{
"id":2,
"domain":"owner"
},
{
"id":3,
"domain":"34b5756175a848f7a1395e1a19e10602"
}
]
}发布于 2020-09-18 15:43:44
您可以通过以下方式仅获取具有不同域的数组元素:
$ jq '.data[] | select(.domain != "moderator" and .domain != "owner")' input.json
{
"id": 3,
"domain": "34b5756175a848f7a1395e1a19e10602"
}如果您只需要id值,而不是整个对象,那么可以在jq过滤器的末尾添加| .id。
发布于 2020-09-18 15:44:47
您可以使用jq函数select
cat text.json | jq '.data[] | select((.domain != "moderator") and (.domain != "owner"))'此外,您还可以使用length函数来获取数组的大小。
jq '.[] | length' test.jsonhttps://stackoverflow.com/questions/63950396
复制相似问题