json 在一行上从jq获取输出

laawzig2  于 2023-04-08  发布在  其他
关注(0)|答案(3)|浏览(177)

我得到了下面的输出使用: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 }
qlzsbp2j

qlzsbp2j1#

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

yqkkidmi2#

不完全是对这个问题的长版本的回答,但是对于那些在谷歌上搜索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中找到。

62lalag4

62lalag43#

在jq 1.6版本中,使用“-c”和“-r”的答案对我不起作用。我所做的如下:
给定输入如

{
  "parameters": {
    "puppetmaster": "",
    "ansible_job_template_id": "117",
    "lifecycle_environment": "Dev",
    "hostname": "childmas01",
}

和jq命令,如

jq -r '.parameters | .hostname,.lifecycle_environment' filename

我得到的输出是这样的:

chi12ldmas01
Dev

我用-c代替-r得到了同样的结果,用-cr也得到了同样的结果。所以我只是把结果做成一个数组,然后用空格连接它们,就像这样:

jq -r '.parameters | [ .hostname,.lifecycle_environment ] | join(" ")'  filename

得到这个:

childmas01 Dev

相关问题