如何处理jq中match函数的输出?

How to process output from match function in jq?

我正在使用 js 工具来解析一些 JSONs/strings。我的最小示例是以下命令:

echo '"foo foo"' | jq 'match("(foo)"; "g")'

结果如下:

{
  "offset": 0,
  "length": 3,
  "string": "foo",
  "captures": [
    {
      "offset": 0,
      "length": 3,
      "string": "foo",
      "name": null
    }
  ]
}
{
  "offset": 4,
  "length": 3,
  "string": "foo",
  "captures": [
    {
      "offset": 4,
      "length": 3,
      "string": "foo",
      "name": null
    }
  ]
}

我希望此示例的最终输出为:

"foo,foo"

但在这种情况下,我得到两个单独的对象,而不是我可以调用 implode 的数组或类似对象。我想要么 API 不是为我的 UC 设计的,要么我对它的理解是非常错误的。请指教。

以下脚本使用 .string 从每个单独的对象中获取字符串值,将它们包装在数组 [...] 中,然后使用 [=12= 用逗号连接数组的成员].

我修改了正则表达式,因为您实际上不需要给定用例的捕获组,但如果您想访问捕获组,您可以 .captures[].string 而不是 .string

echo '"foo foo"' | jq '[match("foo"; "g").string] | join(",")'