从一行获取jq的输出

Jit*_*tra 43 json jq

我使用以下输出:https://stackoverflow.com/a/40330344

 (.issues[] | {key, status: .fields.status.name, assignee: .fields.assignee.emailAddress})
Run Code Online (Sandbox Code Playgroud)

输出:

 {  
   "key": "SEA-739",
   "status": "Open",
   "assignee": null
 }
 {
   "key": "SEA-738",
   "status": "Resolved",
   "assignee": "user2@mycompany.com"
 }
Run Code Online (Sandbox Code Playgroud)

但我需要解析每一行,但就关键组而言,很难确定哪个受让人是哪个密钥.这有可能使用jq在一行中生成一堆吗?

预期产量:

{ "key": "SEA-739", "status": "Open", "assignee": null }
{ "key": "SEA-738", "status": "Resolved", "assignee": "user2@mycompany.com"}
Run Code Online (Sandbox Code Playgroud)

要么

{ "SEA-739", "Open", null }
{ "SEA-738", "Resolved", user2@mycompany.com }
Run Code Online (Sandbox Code Playgroud)

hme*_*ia1 79

-c 是你可能需要的

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

jq -c . input

给予;

{"key":"SEA-739","status":"Open","assignee":null}
{"key":"SEA-738","status":"Resolved","assignee":"user2@mycompany.com"}
Run Code Online (Sandbox Code Playgroud)

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

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 (11认同)
  • 请参阅此答案/sf/ask/2952504551/。似乎有时您必须运行查询两次:`$curl | jq -c '.[]' | jq -c '.[]'` (3认同)
  • 还要考虑“-j”删除尾随换行符有帮助的情况。 (3认同)
  • @DragonKnight 这是一个外部问题,与“jq”无关。您必须在输出或类似内容中分隔空格 (2认同)

bsc*_*ter 21

不完全是对长版问题的回答,但对于那些在谷歌上搜索 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
Run Code Online (Sandbox Code Playgroud)

@sh而不是@tsv回报:

'SEA-739' 'Open' null
'SEA-738' 'Resolved' 'user2@mycompany.com'
Run Code Online (Sandbox Code Playgroud)

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

  • 很有帮助!请注意,答案使用“-r”来获得正确的输出。其他选项包括“@csv”、“@text”、“@base64”以及“@uri”、“@html”等转义选项。相关手册部分在这里:https://stedolan.github.io/jq/manual/#Formatstringsandescaping (3认同)