从一行获取jq的输出

时间:2016-11-03 08:01:23

标签: json jq

我使用以下内容获得了以下输出: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"}

OR

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

2 个答案:

答案 0 :(得分:60)

您可能需要

-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})'

答案 1 :(得分:2)

并非精确地回答该问题,而是针对那些用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