长嵌套结果的jq过滤器

时间:2019-11-21 23:24:56

标签: json jq

我想使用jq JSON处理器从此结果中仅提取mac字段:

[
  {
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
      0,
      {
        "results": [
          {
            "mac": "11:22:33:44:55:66",
            "noise": 0,
            "mesh llid": 0,
            "connected_time": 165947,
            "rx": {
              "rate": 6000
            },
            "mesh local PS": "",
            "tx": {
              "rate": 6000
            },
            "signal": -63
          }
        ]
      }
    ]
  },
  {
    "id": 2,
    "jsonrpc": "2.0",
    "result": [
      0,
      {
        "results": [
          {
            "mac": "11:22:33:44:55:66",
            "noise": -105,
            "mesh llid": 0,
            "connected_time": 106975,
            "rx": {
              "rate": 650000
            },
            "mesh local PS": "",
            "tx": {
              "rate": 360000
            },
            "inactive": 40
          },
          {
            "mac": "11:22:33:44:55:66",
            "noise": -105,
            "mesh llid": 0,
            "connected_time": 20813,
            "rx": {
              "rate": 24000
            },
            "mesh local PS": "",
            "tx": {
              "rate": 6000
            },
            "inactive": 230
          },
          {
            "mac": "11:22:33:44:55:66",
            "noise": -105,
            "mesh llid": 0,
            "connected_time": 2106,
            "rx": {
              "rate": 24000
            },
            "mesh local PS": "",
            "tx": {
              "rate": 6000
            },
            "inactive": 240
          }
        ]
      }
    ]
  }
]

如果我使用jq '.[].result',则不知道如何选择下一个结果字段。我使用了在线服务jq play-但没有运气。我尝试添加的所有内容都会导致错误。

如果我仅获得mac地址,而没有json格式(如果可能)的话,那么最好。但是我以后也可以使用egrep / awk和其他提取程序。

1 个答案:

答案 0 :(得分:2)

以下使用..,因此可能不完全是您想要的,但是它具有简单的优点:

jq -r '.. | objects | .mac // empty' input.json
11:22:33:44:55:66
11:22:33:44:55:66
11:22:33:44:55:66
11:22:33:44:55:66