如何用jq的max_by获取含最大vout.value的tx父对象?
解决方案
直接使用以下单条jq命令即可实现需求,既保证找到包含最大value的vout的父tx,又保留完整的tx信息:
cat file | jq '.tx | max_by( .vout | max_by(.value).value )'
命令说明
.tx:定位到顶层的tx数组max_by( .vout | max_by(.value).value ):对每个tx对象,先计算其所有vout中的最大value值,再以这个值为依据,筛选出整个tx数组中对应最大value的tx对象
JSON示例
{ "tx": [ { "txid": "tx_001", "fee": 0.0005, "vout": [ {"value": 1.2, "address": "addr_a"}, {"value": 3.5, "address": "addr_b"} ] }, { "txid": "tx_002", "fee": 0.0003, "vout": [ {"value": 2.7, "address": "addr_c"}, {"value": 0.8, "address": "addr_d"} ] }, { "txid": "tx_003", "fee": 0.0007, "vout": [ {"value": 4.1, "address": "addr_e"} ] } ] }
执行上述命令后,会返回包含最大vout(value:4.1)的完整tx对象:
{ "txid": "tx_003", "fee": 0.0007, "vout": [ {"value": 4.1, "address": "addr_e"} ] }
内容的提问来源于stack exchange,提问作者11100100
相关产品推荐
相关产品推荐

