【发布时间】:2021-04-17 16:26:16
【问题描述】:
我有下面这样的json数据
{"lastUpdateId":18891938,
"bids":[
["1","50"],
["2","40"],
["3","30"],
["4","20"],
["5","10"]
],
"asks":[
["6","10"],
["7","20"],
["8","30"],
["9","40"],
["10","50"]
]}
那么下面的代码就可以像这样导出CSV的结果了
jq -r keys[] as $k | select(.[$k]|type=="array") | [$k]+.[$k][] | .[length]= (.[-2:]|map(tonumber)|.[0]*.[1]) |@csv
结果:
"asks","6","10",60
"asks","7","20",140
"asks","8","30",240
"asks","9","40",360
"asks","10","50",500
"bids","1","50",50
"bids","2","40",80
"bids","3","30",90
"bids","4","20",80
"bids","5","10",50
如果我想要其他列作为所有询问的最小值(这里是 6)怎么办? 每个询价和出价的总和,以及与每个询价和出价的总和的比率?
所以我想得到类似这样的 CSV 结果(第 4-6 列是我想要的新列)
asks,6,10,60,6,1300,0.046153846
asks,7,20,140,6,1300,0.107692308
asks,8,30,240,6,1300,0.184615385
asks,9,40,360,6,1300,0.276923077
asks,10,50,500,6,1300,0.384615385
bids,1,50,50,6,350,0.142857143
bids,2,40,80,6,350,0.228571429
bids,3,30,90,6,350,0.257142857
bids,4,20,80,6,350,0.228571429
bids,5,10,50,6,350,0.142857143
6 is minimum value for asks. 1300 is total sum for asks(60,140,240,360,500), 350 is total sum for bids(50,80,90,80,50), and the last values for each line is ratio(4th col/6th col)
【问题讨论】:
-
鉴于您之前在本系列中提出的问题(最近是 stackoverflow.com/questions/67137631/…),请允许我建议,由于 SO 不是免费的编码服务,如果您表明您正在制作通过展示您在之前发布的答案之外的尝试来解决您的问题。
标签: json export-to-csv jq reduce