【问题标题】:How to join multi URL output in curl to pass to jq如何在 curl 中加入多 URL 输出以传递给 jq
【发布时间】:2019-12-11 13:51:11
【问题描述】:

我正在使用这样的多 URL curl 命令:

curl -snL http://url1 http://url2

每个都生成这样的 json:

{
   "thing": 1,
   "other": "foo"
}

{
   "thing": 2,
   "other": "baz"
}

我想知道是否有一种简单的方法可以将它们组合起来,以便可以有效地将它们传递给 jq(或者 jq 可以这样做),这样我就得到了:

[{
   "thing": 1,
   "other": "foo"
},
{
   "thing": 2,
   "other": "baz"
}]

因此最终可以做到:curl -snL http://url1 http://url2 | jq -re .[].other

【问题讨论】:

    标签: bash curl jq


    【解决方案1】:

    JQ 接受 JSON 流。您无需执行任何特殊操作即可让它读取数据。

    $ jq '.' test.json
    {
      "thing": 1,
      "other": "foo"
    }
    {
      "thing": 2,
      "other": "baz"
    }
    $ jq -r '.other' test.json
    foo
    baz
    

    如果您希望 JQ 将输入 slurp 放入一个大数组中,请使用 -s

    $ jq -s '.' test.json
    [
      {
        "thing": 1,
        "other": "foo"
      },
      {
        "thing": 2,
        "other": "baz"
      }
    ]
    

    【讨论】:

    • 我现在记得-s,这就行了。第一个给了我索引错误。信用,你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多