awkの代替としてのjq コマンドラインでのアドホック性が高い分析は時代の変化とともに、csvからxml, 最近はmsgpack, jsonなどのデータフォーマットが利用されます jsonはその生い立ちが、設計・開発されたものではなく、JavaScriptのデータフォーマットから偶然発見されたものでした Apache HadoopやAWS EMR、Google Dataflow, Apache Beamなどで任意のシリアライズ方法が利用できますが、その中でも割と一般的な技術がjsonです。 ビッグデータで利用されてきた知見をローカルでも利用できる一つの手段としてjqと呼ばれるJavaScriptのjsonフォーマット加工に最適化されたインタプリターが利用できます コードの全体はここに保存されているので、適宜参照利用してください jqにcsvを投入する前に前処理 jqだけで全てが完結すること
jq コマンドとは http://stedolan.github.io/jq/ JSONから簡単に値を抜き出したり、集計したり、整形して表示したりできるJSON用のgrepとかawkみたいなコマンドです。 WebサービスがJSONを吐いたり、AWS CLIが JSON を吐いたりする現代社会で大変便利なコマンドです。 マニュアル だいたいここ読めばOK. http://stedolan.github.io/jq/manual/ あ、これで、終わってしまう。だけど気にせず進めます。 簡単な例 まず、空気をつかみましょう。 以下jqコマンドの記法を見ていきます。JSON { "hoge": "value" } があった場合、 . がルート {} を表します。.hoge で "value" を表現します。だいたいこんな感じです。 ただの整形 しばらく下記のJSONを例に進めます。itemsには配
[ {"id":1,"name":"akane","birthday":"08-16","vivid_info":{"color":"red","weapon":"Rang"}}, {"id":2,"name":"aoi","birthday":"06-17","vivid_info":{"color":"blue","weapon":"Impact"}}, {"id":3,"name":"wakaba","birthday":"05-22","vivid_info":{"color":"green","weapon":"Blade"}}, {"id":4,"name":"himawari","birthday":"07-23","vivid_info":{"color":"yellow","weapon":"Collider"}}, {"id":0,"name":"rei"} ] pac
JSONの処理 JSONを扱う場合encoding/jsonを使う。Goの場合、JSONデータを定義した構造体に入れるのが一般的。 JSONの解析 { "id": 1, "name": "nana", "birthday": "08-16", "vivid_info": { "color": "red", "weapon": "Rang" } } type Person struct { ID int `json:"id"` Name string `json:"name"` Birthday string `json:"birthday"` VividInfo struct { Color string `json:"color"` Weapon string `json:"weapon"` } `json:"vivid_info"` }
以下のツイートにもある通り、一見 golang は struct を定義しないと JSON を扱えないように見えます。他にも似たようなツイートをチラホラと見かけましたが、それらは全部誤解です。そこでこの記事では、golang でゆるふわ (structを定義せず) に JSON を扱う方法を紹介します。 golang。rubyのようにゆるふわにJSONは扱えない? https://t.co/olsryDHc5G — bamchoh (@bamchoh) 2016年6月24日 この記事では入力の json.Unmarshal() を取り扱いますが、出力の json.Marshal() にも応用できます。 TL;DR json.Unmarshal() には *interface{} を渡せます interface{} は dproxy を使うと、値のアクセスで楽ができます json.Unmar
はじめに このページは JSONのデータを変換処理するコマンドラインツール jq (http://stedolan.github.io/jq/) を、シェル芸で上手く使うためのテクニックをまとめたページです。 jqのインストール方法については、Qiita や インターネット上のページ を参考にして下さい。 第22回シェル芸勉強会 大阪サテライト の LTで発表した内容 に加筆・修正を行ったものとなっております。 定番のヘルプ表示 $ jq -h jq - commandline JSON processor [version 1.5] Usage: jq [options] <jq filter> [file...] jq is a tool for processing JSON inputs, applying the given filter to its JSON text inp
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く