「jq」の版間の差分

提供: Node.js/JavaScript入門
移動: 案内検索
(ページの作成:「jqコマンドとは、コマンドライン JSON プロセッサです。jsonデータの整形や抽出ができます。jqコマンドとは別の存在とし...」)
(相違点なし)

2014年9月8日 (月) 23:05時点における版

jqコマンドとは、コマンドライン JSON プロセッサです。jsonデータの整形や抽出ができます。jqコマンドとは別の存在として、node.jsnpmモジュールとして、サーバサイド jQuery ラッパーの名前も jq です。

読み方

jq
じぇーきゅー

概要

jqコマンドは、awkやsedのように整形や加工を行うコマンドです。

直列で表示されたJSONフォーマットは、ヒューマンリーダブルではありません。

[{"name":"foo","age":10},{"name":"bar","age":20},{"name":"hoge","age":30}]

このように展開することによって、可読性が改善します。

[
  {
    "age": 10,
    "name": "foo"
  },
  {
    "age": 20,
    "name": "bar"
  },
  {
    "age": 30,
    "name": "hoge"
  }
]

インストール

FreeBSD

$ sudo pkg install jq

Ubuntu

$ sudo apt-get install jq

CentOS

$ sudo yum -y install jq

Mac

brew install jq

使い方

コマンドラインオプション

jq - commandline JSON processor [version 1.3]
Usage: jq [options] <jq filter> [file...]
 
For a description of the command line options and
how to write jq filters (and why you might want to)
see the jq manpage, or the online documentation at
http://stedolan.github.com/jq

JSONを整形して表示する

$ cat b.json
[{"name":"foo","age":10},{"name":"bar","age":20},{"name":"hoge","age":30}]
$ jq . b.json
[
  {
    "age": 10,
    "name": "foo"
  },
  {
    "age": 20,
    "name": "bar"
  },
  {
    "age": 30,
    "name": "hoge"
  }
]

JSONからn番目のエントリを抽出する

インデックスの値は、0から数えます。2番目を表示するには、1を指定します。

$ jq '.[1]' b.json
{
  "age": 20,
  "name": "bar"
}

JSONで特定のフィールドを抽出する

2番めのageのフィールドだけを抽出します。

$ jq '.[1].age' b.json
20

すべてのageのフィールドを抽出します。

$ jq '.[].age' b.json
10
20
30

値の範囲を指定する

$ jq '.[].age >= 20 ' b.json
false
true
true

関連項目