使用shell脚本从json数组中提取最大值

使用 jq,我从数据源中提取了一个 json 数组,如下所示:

[
  {
    "rank": 69,
    "name": "Luigi"
  },
  {
    "rank": 420,
    "name": "Peach"
  },
  {
    "rank": 666,
    "name": "Toad"
  },
  {
    "rank": 42,
    "name": "Mario"
  }
]

是否有一种优雅的方法可以在 shell 脚本中提取数组中字段的最大值?在这个例子中,我试图得到“666”。我可以编写一个专门的程序来轻松地做到这一点,但我更愿意留在单个 shell 脚本中,除非这样做太难看。我在 Ubuntu Docker 容器的上下文中,可以根据需要安装其他软件包。

回答

使用jq,您可以使用max_by功能:

max_by(.rank) 将产生:

{
  "rank": 666,
  "name": "Toad"
}

然后可以通过管道传输结果以从中提取rank:(max_by(.rank)|.rank给出666)。通过在终端前面加上jq– 来运行此查询jq 'max_by(.rank)|.rank'


以上是使用shell脚本从json数组中提取最大值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>