Если вы перенаправили вывод curl в jq -r
с помощью следующего фильтра, вы должны получить основные версии, независимо от того, как упорядочены номера версий в результатах curl:
map(.name)
| map(split(".") | map(tonumber? // .) )
| group_by(.[0])
| map(sort)
| map( .[-1] | map(tostring) | join("."))
| .[]
Variation
Если вы хотите, чтобы выходные данные также были отсортированы, просто удалите «v» заранее, а затем закрепите его.В интересах общности давайте определим функцию, которая будет выводить тег самого последнего выпуска для каждого основного выпуска:
# Input: an array of "x.y.z..." strings,
# some or all components of which may be integers
# Output: a stream of the latest "major" releases
def majors:
map( split(".") | map(tonumber? // .))
| group_by(.[0])
| map(sort[-1])[]
| map(tostring)
| join(".") ;
map( .name[1:] ) | "v" + majors
Typescript
$ jq -rf major-version.jq input.json
v8.11.2
v9.11.1
v10.1.0