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