如何在jq中处理匹配函数的输出?

时间:2015-07-21 11:25:46

标签: jq

我正在使用js工具来解析一些JSON /字符串。我的最小例子是以下命令:

{
  "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

但在这种情况下,我得到两个单独的对象,而不是我可以调用{{1}}的数组或类似对象。我想这个API不是为我的UC制作的,或者我对它的理解是非常错误的。请建议。

1 个答案:

答案 0 :(得分:3)

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

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

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