【问题标题】:Can't return first value with jq不能用 jq 返回第一个值
【发布时间】:2021-10-20 16:13:59
【问题描述】:

我从终端运行的命令返回以下内容:

{
  "attributes": {
    "env": "prod"
   },
   "created_by": "email@email.com",
   "id": "612",
   "state": "published",
   "version": "0.22.0"
}
{
  "attributes": {
    "env": "prod"
   },
   "created_by": "email@email.com",
   "id": "611",
   "state": "published",
   "version": "0.22.0"
}

我只想从第一个对象中获取“版本”。有办法做到这一点吗?我尝试使用 Array 的所有操作都返回错误...

【问题讨论】:

  • 请用所需的输出更新问题。您的 json 中有两个“版本”字段,您只需要第一个版本: {"version":"0.22.0"} ?或者你想要:[{"version":"0.22.0"}, {"version":"0.22.0"}]
  • 你得到什么错误?是不是因为这不是有效的 JSON,也不是有效的 JSON 对象流? JSON 不允许尾随逗号,就像您在 "env": "prod",} 中看到的那样,如果这是您问题的重点,请说出来。
  • 您好,@Joaquin,感谢您的耐心等待!我想要 {"version":"0.22.0"},但似乎 Peak 的答案返回了我需要的值!
  • 你好,@Weeble!当我尝试使用 [0] 获取第一个值时,它曾经返回类似“jq: error (at :19): Cannot index string with number”之类的东西。逗号的大小写是我写例子时的错误,对不起!

标签: json stream jq


【解决方案1】:

您提取的数据是 JSON 对象流。您可以通过管道将数据从其中的第一个中提取 .version:

jq -n input.version

【讨论】:

  • 这似乎很好用!它返回“0.22.0”,就像我需要的那样。感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 2022-11-17
  • 2014-07-05
  • 1970-01-01
  • 2019-03-22
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多