单行从jq获取输出


69

我得到以下输出:https : //stackoverflow.com/a/40330344

 (.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 }

Answers:


120

-c 您可能需要的是

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

jq -c。输入

给予

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

或者您可以只更改原始命令

jq -r '(.issues [] | {键,状态:.fields.status.name,受让人:.fields.assignee.emailAddress})''

jq -c '(.issues [] | {键,状态:.fields.status.name,受让人:.fields.assignee.emailAddress})'


15

对于长篇问题,这不完全是一个答案,但对于使用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返回:

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

此外,还有其他输出格式可以用来执行操作,例如像一样对输出进行转义@html或对其进行编码@base64。可以在jq(1)手册页的格式字符串和转义部分中找到该列表,也可以在stedolan.github.io/jq/manual在线获取该列表


@tsv是至关重要的,而没有(或@sh)我的输出对自己的行每一个值。有用的答案!我在其他任何地方都找不到此“字符串”版本(而不是json格式)。
alec
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.