jq在curl输出中使用正则表达式



我有一个JSON

{
"router": {
"node_id": "ip-1-2-3-4",
"state": "HEALTHY",
"message": "OK"
},
"services": [
{
"service_id": "test@1234",
"state": "HEALTHY",
"message": "OK"
},
{
"service_id": "something@45678",
"state": "NOT HEALTHY",
"message": "OK"
}

我想要得到状态,我可以得到json的第一部分但不能得到其余的

工作:

curl -sk https://example/test | jq -r .router.state
  1. 我怎么能得到services下的JSON的其余部分的state只有当它匹配"service_id": "test@*"

curl -sk https://example/test | jq -r .services.state似乎不起作用

  1. 如何将regex添加到上述命令中以匹配service_id值
.services[] | select(.service_id | test("test@*")).state

如果service_id匹配test@*正则表达式,则输出.state

如果没有找到匹配项,则不返回任何内容。

在线演示

最新更新