根据您的数据,以下过滤器:
[ .scoreboard[].games[]
| select(.bracketRound=="First Round" and .bracketRegion=="EAST")
| (.home, .away) ]
| sort_by(.teamSeed | tonumber)
| .[]
| [.teamSeed, .nameRaw ]
产生:
["2","Duke"]
["3","Baylor"]
["6","SMU"]
["7","South Carolina"]
["10","Marquette"]
["11","USC"]
["14","New Mexico St."]
["15","Troy"]
如果您只想要“nameRaw”值,请将过滤器的最后一行替换为:| .nameRaw
请注意,此处需要tonumber,因为种子值以字符串形式给出。
处理多个顶级对象
在评论中,OP 给出了一个包含两个顶级对象的 pastebin (https://pastebin.com/1eTAX4y3),每个对象都有一个“记分牌”。因此,让我们考虑任意数量的此类对象的情况。
为了清楚起见,我们首先定义一个函数,用于从带有“记分板”的 JSON 对象中选择主/离对象:
def games:
[.scoreboard[].games[]
| select(.bracketRound=="First Round" and .bracketRegion=="EAST")
| (.home, .away) ] ;
使用 -s 命令行选项,我们可以确保 JSON 输入是一个对象数组。 games产生的数组可以用add组合:
map(games)
| add
| sort_by(.teamSeed | tonumber)
| .[]
| [.teamSeed, .nameRaw ]
鉴于 pastebin 数据,使用命令行选项 -s 和 -c 选项的调用会产生:
["1","Villanova"]
["2","Duke"]
["3","Baylor"]
["4","Florida"]
["5","Virginia"]
["6","SMU"]
["7","South Carolina"]
["8","Wisconsin"]
["9","Virginia Tech"]
["10","Marquette"]
["11","USC"]
["12","UNCW"]
["13","East Tenn. St."]
["14","New Mexico St."]
["15","Troy"]
["16","Mt. St. Mary's"]