缺少键时如何使jq输出逗号分隔
How to make jq output comma separated when key is absent
我正在尝试从下面的 json 文件中以逗号分隔值获取消息字段
[
{
"title":"second bad commit",
"message":"second bad commit"
},
{
"title":"first bad commit",
"message":"first bad commit",
}
]
我尝试用 jq 做到这一点:jq -r '.message | join(",")'
它不断抛出以下错误:
jq: error (at <stdin>:0): Cannot index array with string "message"
那么,当键不存在时,如何使 jq 输出逗号分隔
假设你的数据实际上是:
[
{
"title":"second bad commit",
"message":"second bad commit"
},
{
"title":"first bad commit",
"message":"first bad commit"
}
]
然后您需要使用 map
映射每个值:
$ jq 'map(.message)'
[
"second bad commit",
"first bad commit"
]
然后是连接管道:
$ jq 'map(.message) | join(",")'
"second bad commit,first bad commit"
然后加上-r
输出原始值。:
$ jq -r 'map(.message) | join(",")'
second bad commit,first bad commit
我正在尝试从下面的 json 文件中以逗号分隔值获取消息字段
[
{
"title":"second bad commit",
"message":"second bad commit"
},
{
"title":"first bad commit",
"message":"first bad commit",
}
]
我尝试用 jq 做到这一点:jq -r '.message | join(",")'
它不断抛出以下错误:
jq: error (at <stdin>:0): Cannot index array with string "message"
那么,当键不存在时,如何使 jq 输出逗号分隔
假设你的数据实际上是:
[
{
"title":"second bad commit",
"message":"second bad commit"
},
{
"title":"first bad commit",
"message":"first bad commit"
}
]
然后您需要使用 map
映射每个值:
$ jq 'map(.message)'
[
"second bad commit",
"first bad commit"
]
然后是连接管道:
$ jq 'map(.message) | join(",")'
"second bad commit,first bad commit"
然后加上-r
输出原始值。:
$ jq -r 'map(.message) | join(",")'
second bad commit,first bad commit