在 jq with_entries 上解析

Parsing on jq with_entries

我有以下数据 命令输出:

| jq '.rrsets[]'
{
  "comments": [],
  "name": "name1.",
  "records": [
    {
      "content": "10.10.10.10",
      "disabled": false
    }
  ],
  "ttl": 60,
  "type": "A"
}
{
  "comments": [],
  "name": "name2.",
  "records": [
    {
      "content": "20.20.20.20",
      "disabled": false
    }
  ],
  "ttl": 60,
  "type": "CNAME"
}

我想获取类型为 A 的名称。 求助,告诉我怎么做?

| jq '.rrsets[] | with_entries(select(.key== "name", .value == "A"))'
{
  "name": "name1."
}
{
  "name": "name2.",
  "type": "A"
}

显示所有行,但我只需要 where type = A

我不确定这是否是您要找的东西,但是 ... | select(.type == "A") 不就可以吗?

... | jq '.rrsets[] | select(.type == "A")'
{
  "comments": [],
  "name": "name1.",
  "records": [
    {
      "content": "10.10.10.10",
      "disabled": false
    }
  ],
  "ttl": 60,
  "type": "A"
}

Demo

如果您只需要 .name(使用 -r 摆脱 JSON 格式):

... | jq -r '.rrsets[] | select(.type == "A").name'
name1.

Demo