简体   繁体   English

编辑 json 到 csv output 文件

[英]Edit json to csv output files

I am trying to get JSON data by 'curl' and convert it to ' csv ' with the ' jq ' command.我正在尝试通过“curl”获取JSON数据,并使用“ jq ”命令将其转换为“ csv ”。

Code:代码:

#!/bin/bash
 
    #Remove previously generated output files 
    rm datacsv.csv  output.json 
   #Get crypto pairs data from the server (curl) in JSON from the COINAMRKET.COM server, save output.json 
              curl -H "X-CMC_PRO_API_KEY: 45f65521-ad1b-4dbb-9c33-743ba7a63e68" -H "Accept: application/json" -d "start=1&limit=50&convert=USD" -G https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest>output.json 
                             
     #Convert JSON to CSV, Outputfile: datacsv.csv                               
      jq -r '.data[]| [paths(scalars) | select( all(.[]; type=="string")) ] as $paths| ($paths |  map(["data"] + . | join("__"))),[ getpath($paths[]) ]|@tsv'  output.json  >datacsv.csv 

Output csv file ( datacsv.csv ) has repeated header for each record: Output csv文件( datacsv.csv )对于每条记录都重复了 Z099FB995346F31C7549F6E40E3:FZ

data__id    data__name  data__symbol    data__slug  data__num_market_pairs  data__date_added    data__max_supply    data__circulating_supply    data__total_supply  data__cmc_rank  data__last_updated  data__quote__USD__price data__quote__USD__volume_24h    data__quote__USD__percent_change_1h data__quote__USD__percent_change_24h    data__quote__USD__percent_change_7d data__quote__USD__percent_change_30d    data__quote__USD__percent_change_60d    data__quote__USD__percent_change_90d    data__quote__USD__market_cap    data__quote__USD__last_updated                  
1   Bitcoin BTC bitcoin 9547    2013-04-28T00:00:00.000Z    21000000    18691931    18691931    1   2021-04-26T16:21:02.000Z    53285.1129054482    59530205038.6485    -0.6500853  5.53203621  -3.31916623 -3.33187743 4.07075949  69.03589533 996001653755.848    2021-04-26T16:21:02.000Z                    
data__id    data__name  data__symbol    data__slug  data__num_market_pairs  data__date_added    data__circulating_supply    data__total_supply  data__cmc_rank  data__last_updated  data__quote__USD__price data__quote__USD__volume_24h    data__quote__USD__percent_change_1h data__quote__USD__percent_change_24h    data__quote__USD__percent_change_7d data__quote__USD__percent_change_30d    data__quote__USD__percent_change_60d    data__quote__USD__percent_change_90d    data__quote__USD__market_cap    data__quote__USD__last_updated                      
1027    Ethereum    ETH ethereum    6312    2015-08-07T00:00:00.000Z    115629413.749   115629413.749   2   2021-04-26T16:21:02.000Z    2482.06593555852    36892666790.3224    -0.23795873 5.43647682  16.16445289 46.51867774 51.11877441 94.25117671 286999829014.995    2021-04-26T16:21:02.000Z                        
1839    Binance Coin    BNB binance-coin    579 2017-07-25T00:00:00.000Z    170532785   153432897   169432897   3   2021-04-26T16:20:10.000Z    533.23090641431 4373867739.9739 0.03999376  3.29006408  8.84917842  103.69391599    108.02152044    1217.45571414   81815162741.0835    2021-04-26T16:20:10.000Z                    
52  XRP XRP xrp 664 2013-08-04T00:00:00.000Z    100000000000    45404028640 99990831162 4   2021-04-26T16:21:03.000Z    1.24569103514058    13547433610.3615    0.9120132   9.79015802  -4.60461388 125.54110459    162.86485803    372.19710035    56559391436.1141    2021-04-26T16:21:03.000Z                    
data__id    data__name  data__symbol    data__slug  data__num_market_pairs  data__date_added    data__circulating_supply    data__total_supply  data__platform__id  data__platform__name    data__platform__symbol  data__platform__slug    data__platform__token_address   data__cmc_rank  data__last_updated  data__quote__USD__price data__quote__USD__volume_24h    data__quote__USD__percent_change_1h data__quote__USD__percent_change_24h    data__quote__USD__percent_change_7d data__quote__USD__percent_change_30d    data__quote__USD__percent_change_60d    data__quote__USD__percent_change_90d    data__quote__USD__market_cap    data__quote__USD__last_updated  
825 Tether  USDT    tether  12325   2015-02-25T00:00:00.000Z    50006254438.5217    51866290994.3298    1027    Ethereum    ETH ethereum    0xdac17f958d2ee523a2206206994597c13d831ec7  5   2021-04-26T16:20:10.000Z    0.99997577777133    117822325986.94 -0.01985404 0.00891016  0.00656415  -0.1262222  -0.05070907 -0.14745816 50005043175.5917    2021-04-26T16:20:10.000Z    
2010    Cardano ADA cardano 259 2017-10-01T00:00:00.000Z    45000000000 31948309440.7478    45000000000 6   2021-04-26T16:20:10.000Z    1.2163725547586 3494400505.85215    -0.63516459 6.44253956  1.77358151  2.5727442   8.69333792  266.42366354    38861046774.6607    2021-04-26T16:20:10.000Z                    
74  Dogecoin    DOGE    dogecoin    331 2013-12-15T00:00:00.000Z    129348760639.944    129348760639.944    7   2021-04-26T16:21:03.000Z    0.26639640673017    6963087140.98019    -0.74842096 -1.96582346 -25.83236676    387.41281461    386.8290754 3173.67302946   34458045049.482 2021-04-26T16:21:03.000Z                        
6636    Polkadot    DOT polkadot-new    186 2020-08-19T00:00:00.000Z    932996847.726976    1068520962.58116    8   2021-04-26T16:21:06.000Z    32.3141434419601    2146407823.73721    -0.76428061 3.64699209  -7.2706416  0.41872077  -5.75544689 96.74696139 30148993968.3461    2021-04-26T16:21:06.000Z                        
data__id    data__name  data__symbol    data__slug  data__num_market_pairs  data__date_added    data__max_supply    data__circulating_supply    data__total_supply  data__platform__id  data__platform__name    data__platform__symbol  data__platform__slug    data__platform__token_address   data__cmc_rank  data__last_updated  data__quote__USD__price data__quote__USD__volume_24h    data__quote__USD__percent_change_1h data__quote__USD__percent_change_24h    data__quote__USD__percent_change_7d data__quote__USD__percent_change_30d    data__quote__USD__percent_change_60d    data__quote__USD__percent_change_90d    data__quote__USD__market_cap    data__quote__USD__last_updated
7083    Uniswap UNI uniswap 235 2020-09-17T00:00:00.000Z    1000000000  523384243.630469    1000000000  1027    Ethereum    ETH ethereum    0x1f9840a85d5af5bf1d1762f925bdaddc4201f984  9   2021-04-26T16:20:10.000Z    35.2645393307245    1159198004.59251    -0.72129315 3.06863351  17.86724054 24.69707747 36.43669393 187.42707789    18456904244.5882    2021-04-26T16:20:10.000Z
2   Litecoin    LTC litecoin    741 2013-04-28T00:00:00.000Z    84000000    66752414.5153875    66752414.5153875    10  2021-04-26T16:21:02.000Z    241.772049644181    4873850130.55793    0.08569225  3.079198    -6.01020181 32.7958836  20.24742388 84.55115332 16138868076.0832    2021-04-26T16:21:02.000Z                    
1831    Bitcoin Cash    BCH bitcoin-cash    586 2017-07-23T00:00:00.000Z    21000000    18719506.25 18719506.25 11  2021-04-26T16:20:08.000Z    825.995177012163    4098896768.46408    -0.62457646 3.13607248  -8.10372907 65.63228051 51.71459366 96.05126285 15462221878.549 2021-04-26T16:20:08.000Z                    
1975    Chainlink   LINK    chainlink   495 2017-09-20T00:00:00.000Z    1000000000  419009556.434445    1000000000  1027    Ethereum    ETH ethereum    0x514910771af9ca656af840dff83e8264ecf986ca  12  2021-04-26T16:20:10.000Z    34.4665578984855    1711065668.01118    0.39416876  3.37393637  -5.31781365 29.84576669 22.2383717  55.53806504 14441817136.8665    2021-04-26T16:20:10.000Z
5426    Solana  SOL solana  41  2020-04-10T00:00:00.000Z    269856622.936333    493886983.051495    13  2021-04-26T16:21:05.000Z    46.722213592056 1743822879.60336    -1.09733007 3.84673072  46.93695628 195.9965083 184.71221177    1146.97970713   12608298776.0623    2021-04-26T16:21:05.000Z    

I want to filter output 'csv' file, get interested fields ( data__id , data__name , data__symbol , data__slug , data__num_market_pairs , data__date_added , data__max_supply , data__circulating_supply , data__total_supply )and exclude rest.我想过滤 output 'csv' 文件,获取感兴趣的字段( data__iddata__namedata__symboldata__slugdata__num_market_pairsdata__date_addeddata__max_supplydata__circulating_supplydata__total_supply )并排除 Z6006A8800B58A868

Desired output:所需的 output:

data__id    data__name  data__symbol    data__slug  data__num_market_pairs  data__date_added    data__max_supply    data__circulating_supply    data__total_supply
1   Bitcoin BTC bitcoin 9547    2013-04-28T00:00:00.000Z    21000000    18691931    18691931
1027    Ethereum    ETH ethereum    6312    2015-08-07T00:00:00.000Z    115629413.749   115629413.749   2
1839    Binance Coin    BNB binance-coin    579 2017-07-25T00:00:00.000Z    170532785   153432897   169432897
52  XRP XRP xrp 664 2013-08-04T00:00:00.000Z    100000000000    45404028640 99990831162
825 Tether  USDT    tether  12325   2015-02-25T00:00:00.000Z    50006254438.5217    51866290994.3298    1027
2010    Cardano ADA cardano 259 2017-10-01T00:00:00.000Z    45000000000 31948309440.7478    45000000000
74  Dogecoin    DOGE    dogecoin    331 2013-12-15T00:00:00.000Z    129348760639.944    129348760639.944    7
6636    Polkadot    DOT polkadot-new    186 2020-08-19T00:00:00.000Z    932996847.726976    1068520962.58116    8
7083    Uniswap UNI uniswap 235 2020-09-17T00:00:00.000Z    1000000000  523384243.630469    1000000000
2   Litecoin    LTC litecoin    741 2013-04-28T00:00:00.000Z    84000000    66752414.5153875    66752414.5153875
1831    Bitcoin Cash    BCH bitcoin-cash    586 2017-07-23T00:00:00.000Z    21000000    18719506.25 18719506.25
1975    Chainlink   LINK    chainlink   495 2017-09-20T00:00:00.000Z    1000000000  419009556.434445    1000000000
5426    Solana  SOL solana  41  2020-04-10T00:00:00.000Z    269856622.936333    493886983.051495    13

To emit the headers just once, you would use the template: HEADERS, TABLE :要仅发出一次标头,您将使用模板: HEADERS, TABLE

def relevantPaths:
   "id,name,symbol,slug,num_market_pairs,date_added,max_supply,circulating_supply,total_supply"
  | split(",")
  | map([.]) ;

relevantPaths as $paths
| ([["data"] + $paths[]] | map(join("__"))),
  (.data[] | [ getpath($paths[]) ])
| @tsv

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM