JSONファイルをコマンドで扱える「jq」を学習してみる #1「初期設定」

2015年4月13日

jq プログラミング 特集

テキストデータベースでデータを処理する時に、1行レコードを”,”(カンマ)などのsplit文字で分割して、配列として操作しなければいけなかったが、xmlやjsonなどのkey=valueに対応すると、かなりデータ保存の幅とシステムの簡易構造が行えると思い、 コマンドラインでjsonを扱える「jq」コマンドを調査してみました。

まずはインストール

クライアント端末(開発端末)にMac、サーバーサイド(公開端末)にUbuntuを想定して、各端末にインストール

macにインストール

$ brew install jq

ubuntuにインストール

$ apt-get install jq

CentOSにインストール(おまけ)

$ yum install jq かなりあっさりインストール完了です。 $ jq —version #mac jq—1.4 #ubuntu jq version 1.2 #CentOS jq version 1.3 バージョンを確認すると、リポジトリにより差分があるようですが、 気になる方は下記本家サイトよりDLしてインストールしてください。 http://stedolan.github.io/jq/

データを用意

data1.json

{"name": "Abc", "addr": "Tokyo", "num": 10, "arr": ["a","b","c"]} {"name": "Def", "addr": "Osaka", "num": 20, "arr": ["d","e","f"]} {"name": "Ghi", "addr": "Nagoya","num": 100,"arr": ["g","h","i"]} 内容に意味はありません。 とりあえず、文字列、数値、配列などを入れ込んでみました。 検証したい方は、色々な型を試してみてください。

jqの簡単な使い方

jqコマンドでどのくらい簡単に値を取り出せるのか簡単なリファレンスをメモります。

基本パターン

$ json [pattern] [file]
# option pattern : CSSのセレクタのようなもの file : jsonファイル(複数指定もOK)

内容を全てパースする

$ json ‘.’ ./data1.json #結果 { "arr": [ "a", "b", "c" ], "num": 10, "addr": "Tokyo", "name": "Abc" } { "arr": [ "d", "e", "f" ], "num": 20, "addr": "Osaka", "name": "Def" } { "arr": [ "g", "h", "i" ], "num": 100, "addr": "Nagoya", "name": "Ghi" }

特定のkeyでvalueを取り出す

$ jq '.name' data1.json "Abc" "Def" "Ghi"

配列の取得

$ jq '.arr' data1.json [ "a", "b", "c" ] [ "d", "e", "f" ] [ "g", "h", "i" ]

一括の配列で取得

$ jq '.arr[]' data1.json "a" "b" "c" "d" "e" "f" "g" "h" "i"

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。