作者:陈先森的记忆 | 来源:互联网 | 2024-10-25 21:02
使用 jq,我从数据源中提取了一个 json 数组,如下所示:[ { "rank": 69, "name": "Luigi" }, { "rank": 420, "nam
使用 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'
。