使用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"
}

然后可以通过管道将结果提取为rankmax_by(.rank)|.rank(给出666(。从终端运行此查询,方法是在其前面加上jqjq 'max_by(.rank)|.rank'

假设json在一个名为data.json:的文件中

cat data.json | jq .[].rank | sort -n -r | head -n 1

相关内容

  • 没有找到相关文章

最新更新