BLOGTIMES
2013/12/03

シェルスクリプトで JSON のデータを処理する

  sh  cli  javascript 
このエントリーをはてなブックマークに追加

最近は API の返り値が JSON になっていることは珍しくなくなってきましたが、API をりようしたちょっとしたスクリプトを書くときに JSON の中身からデータを取り出して処理したいとなるとちょっと厄介です。これまでは JSON パーサーを持った Ruby や Node.JS なんかを使っていちいち処理を書いていたのですが、やはりちょっとヘビーなのでうまく bash だけでやる方法がないかどうか調べてみました。

いくつかググって調べてみたら Node.JS を利用したコマンドラインの jsontool *1 というプロダクトが見つかりました。
インストールは Node.JS が導入されていれば nph で一撃です。

# npm install -g jsontool npm http GET https://registry.npmjs.org/jsontool npm http 200 https://registry.npmjs.org/jsontool npm http GET https://registry.npmjs.org/jsontool/-/jsontool-7.0.1.tgz npm http 200 https://registry.npmjs.org/jsontool/-/jsontool-7.0.1.tgz /usr/bin/json -> /usr/lib/node_modules/jsontool/lib/jsontool.js jsontool@7.0.1 /usr/lib/node_modules/jsontool # json --version json 7.0.1 written by Trent Mick https://github.com/trentm/json

以下、簡単な実行例を。

あとはこんな感じで簡単に JSON から必要なデータを取り出すことができます。
perl にあった xpath コマンドのような感じですね。

$ echo '{"a":"123","b":[1,2,3],"c":{"1":"a","2":"b","3":"c"}}' | json { "a": "123", "b": [ 1, 2, 3 ], "c": { "1": "a", "2": "b", "3": "c" } } $ echo '{"a":"123","b":[1,2,3],"c":{"1":"a","2":"b","3":"c"}}' | json a 123 $ echo '{"a":"123","b":[1,2,3],"c":{"1":"a","2":"b","3":"c"}}' | json b [ 1, 2, 3 ] $ echo '{"a":"123","b":[1,2,3],"c":{"1":"a","2":"b","3":"c"}}' | json b[0] 1 $ echo '{"a":"123","b":[1,2,3],"c":{"1":"a","2":"b","3":"c"}}' | json c.1 a

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6311
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン