jq |返回嵌套的json对象中的特定项

时间:2017-11-24 00:08:18

标签: jq

我是jq的新手,无法解决如何从上面的json获取空闲值。通过使用jq命令来检索json。如何使用jq获取空闲值?

{
  "sysstat": {
    "hosts": [
      {
        "nodename": "localhost.localdomain",
        "sysname": "Linux",
        "release": "4.13.13-200.fc26.x86_64",
        "machine": "x86_64",
        "number-of-cpus": 2,
        "date": "24/11/17",
        "statistics": [
          {
            "timestamp": "00:00:45",
            "cpu-load": [
              {
                "cpu": "0",
                "usr": 5.08,
                "nice": 0.03,
                "sys": 1.31,
                "iowait": 0.07,
                "irq": 0.73,
                "soft": 0.09,
                "steal": 0,
                "guest": 0,
                "gnice": 0,
                "idle": 92.69
              }
            ]
          }
        ]
      }
    ]
  }
}

2 个答案:

答案 0 :(得分:2)

这是一个解决方案,假设数据位于data.json

$ jq -M '.sysstat.hosts[0].statistics[0]."cpu-load"[0].idle' data.json
92.69

Try it online at jqplay.org

答案 1 :(得分:2)

在这种特殊情况下,一个简短而有效的解决方案是:

.. | .idle? // empty

如果"空闲"的位置很重要,如果它出现不止一次(或根本不出现),你可以考虑:

.sysstat.hosts[].statistics[] | .["cpu-load"][] | .idle