如何处理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(",")'
我正在使用 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(",")'