jqコマンドが便利な件


テストなどでちょっとAPI叩きたい時、コマンドラインJSONパーサのjqがなかなか便利。

インストール

brew install jq

Mac以外の人はこちらから

とりあえず試す

サンプルに東電電力供給APIを借りました。ありがとうございます。

curl -s "http://tepco-usage-api.appspot.com/2014/2/3.json"|jq '.'

出力

[
  {
    "usage": 2849,
    "entryfor": "2014-02-02 15:00:00",
    "usage_updated": "2014-02-02 16:05:05",
    "forecast": 0,
    "forecast_peak_updated": "2012-02-02 23:30:00",
    "hour": 0,
    "capacity": 4756,
    "capacity_updated": "2012-02-02 23:30:00",
    "forecast_peak_usage": 3920,
    "month": 2,
    "forecast_peak_period": 18,
    "capacity_peak_period": 18,
    "year": 2014,
    "saving": false,
    "day": 3
  },
  # 以下略
]

配列の取り出し

curl -s "http://tepco-usage-api.appspot.com/2014/2/3.json"|jq '.[]'

出力

{
  "usage": 2849,
  "entryfor": "2014-02-02 15:00:00",
  "usage_updated": "2014-02-02 16:05:05",
  "forecast": 0,
  "forecast_peak_updated": "2012-02-02 23:30:00",
  "hour": 0,
  "capacity": 4756,
  "capacity_updated": "2012-02-02 23:30:00",
  "forecast_peak_usage": 3920,
  "month": 2,
  "forecast_peak_period": 18,
  "capacity_peak_period": 18,
  "year": 2014,
  "saving": false,
  "day": 3
}
{
# 以下略

値の取り出し

 curl -s "http://tepco-usage-api.appspot.com/2014/2/3.json"|jq '.[].usage'|ruby -e 'p readlines.map(&:chomp).map(&:to_i).max'                                          

出力

2917
2808
# 以下略

加工

メロスにはawkがわからぬ

 curl -s "http://tepco-usage-api.appspot.com/2014/2/3.json"|jq '.[].usage'|ruby -e 'p readlines.map(&:chomp).map(&:to_i).max'                                          

出力

3805

2/3は暖かかったんで少なめですね。

ワンライナーでちょっとAPI試す時なんかに便利ではないかと。