在一行中获取 jq 的输出

Get outputs from jq on a single line

我使用下面的输出:

 (.issues[] | {key, status: .fields.status.name, assignee: .fields.assignee.emailAddress})

输出:

 {  
   "key": "SEA-739",
   "status": "Open",
   "assignee": null
 }
 {
   "key": "SEA-738",
   "status": "Resolved",
   "assignee": "user2@mycompany.com"
 }

但我需要解析每一行,但就密钥组而言,很难确定哪个受让人是哪个密钥。是否可以使用 jq 将一堆排成一排?

预期输出:

{ "key": "SEA-739", "status": "Open", "assignee": null }
{ "key": "SEA-738", "status": "Resolved", "assignee": "user2@mycompany.com"}

{ "SEA-739", "Open", null }
{ "SEA-738", "Resolved", user2@mycompany.com }

-c 是您可能需要的

使用您在上面发布的输出,您可以进一步处理它:

jq -c . input

给予;

{"key":"SEA-739","status":"Open","assignee":null}
{"key":"SEA-738","status":"Resolved","assignee":"user2@mycompany.com"}

或者你可以改变你原来的命令

jq -r '(.issues[] | {key, status: .fields.status.name, assignee: .fields.assignee.emailAddress})'

jq -c '(.issues[] | {key, status: .fields.status.name, assignee: .fields.assignee.emailAddress})'

不完全是对长版问题的回答,但对于用 Google 搜索此问题以从 jq 寻找其他单行输出格式的人来说:

$ jq -r '[.key, .status, .assignee]|@tsv' <<<'
 {
   "key": "SEA-739",
   "status": "Open",
   "assignee": null
 }
 {
   "key": "SEA-738",
   "status": "Resolved",
   "assignee": "user2@mycompany.com"
 }'
SEA-739 Open
SEA-738 Resolved        user2@mycompany.com

@sh 而不是 @tsv returns:

'SEA-739' 'Open' null
'SEA-738' 'Resolved' 'user2@mycompany.com'

此外,还有其他输出格式可以执行转义输出(如 @html)或对其进行编码(如 @base64)等操作。该列表可在 jq(1) 手册页的 Format strings and escaping 部分或在线 stedolan.github.io/jq/manual.