在单行上从 jq 获取输出

Posted

技术标签:

【中文标题】在单行上从 jq 获取输出【英文标题】:Get outputs from jq on a single line 【发布时间】:2017-03-16 17:44:37 【问题描述】:

我使用以下输出:https://***.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 

【问题讨论】:

【参考方案1】:

-c 是您可能需要的

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

jq -c 。输入

给予;

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

【讨论】:

-c 的长版本是--compact-output 看到这个答案***.com/questions/42178636/…。似乎有时您必须运行两次查询:$ curl | jq -c '.[]' | jq -c '.[]' @NeilG 这是一个数组深度问题,而不是格式问题。您给出的示例与运行 jq -c '.[][]' 相同【参考方案2】:

不完全是对长版问题的回答,但对于那些在谷歌上搜索 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) 手册页的 Format strings and escaping 部分或在线 stedolan.github.io/jq/manual 中找到。

【讨论】:

@tsv 至关重要,没有它(或@sh),我的输出中的每个值都在自己的行中。有帮助的答案!我在其他任何地方都找不到这个“字符串”版本(而不是 json 格式)。 非常有帮助!请注意,答案使用-r 进行正确输出。其他选项有@csv@text@base64 和转义选项,如@uri@html。相关手册部分在这里:stedolan.github.io/jq/manual/#Formatstringsandescaping

以上是关于在单行上从 jq 获取输出的主要内容,如果未能解决你的问题,请参考以下文章

使用'jq'[重复]从JSON输出中获取数据

如何在 VB.net 上从数据库中获取数据到文本框

如何使用 jq 从 JSON 中获取键名

如何在 API 低于 29 上从手机获取图像

Magento 在success.phtml 上从客人那里获取数据

如何在 swift 4 上从 didFinishLaunchingWithOptions 获取通知中心数据