jq コマンド

参考:

jq [Official]

stedolan/jq: Command-line JSON processor – GitHub

ドキュメント

参考:

jq Manual (development version) [Official]

Cookbook · stedolan/jq Wiki – GitHub

Advanced Topics · stedolan/jq Wiki – GitHub

FAQ · stedolan/jq Wiki – GitHub

使い方

参考:

jq コマンドを使う日常のご紹介 – Qiita

整形された JSON 文字列を見たい時、minify したい時、jq コマンドがとても便利だったという話 | woshidan’s loose leaf

JSON on the command line with jq | George Ornbo

導入

参考:

軽量 JSON パーサー jq のドキュメント jq Manual をざっくり日本語訳してみました | DevelopersIO

JSON 処理コマンド jq を使ってみた | ユニキャストラボ

jq コマンドが強力すぎてヤバい件 | CUBE SUGAR STORAGE

JSON 処理コマンド jq を使ってみた | ユニキャストラボ

jq という JSON プロセッサーがすばらしすぎる | シンク株式会社

jq コマンドが実は高性能すぎてビビッた話 – beatsync.net

JSON データを jq コマンドを使ってシュッと加工する | タダケンの Enjoy Tech

入門

参考:

jq を活用して API レスポンス等から欲しい情報だけを抽出する 初級編|DevelopersIO

jq を活用して API レスポンス等から欲しい情報だけを抽出する 中級編|DevelopersIO

jq を活用して API レスポンスから欲しい情報を抽出する 上級編|DevelopersIO

Reshaping JSON with jq | Programming Historian

まとめ

参考:

jq チートシート | Qoosky

JSON Tools Jq | Hyperpolyglot

jq Cheet Sheet – GitHub Gist

整形

参考:

json 整形コマンドラインツール jq – Qiita

-s / --slurp オプション

プロパティを抜き出してオブジェクトの配列を作る。

$ echo '[
    { "a": "1", "b": "2", "c": "3" },
    { "a": "4", "b": "5", "c": "6" }
  ]' \
  | jq ".[] | { a, b }" | jq -s "."
[
  {
    "a": "1",
    "b": "2"
  },
  {
    "a": "4",
    "b": "5"
  }
]

オブジェクトをマージする。

$ echo '[
    { "a": "1", "b": "2", "c": "3" },
    { "d": "4", "e": "5", "f": "6" }
  ]' \
  | jq ".[]" | jq -s "add"
{
  "a": "1",
  "b": "2",
  "c": "3",
  "d": "4",
  "e": "5",
  "f": "6"
}

参考:

複数の json ファイルを jq を使って merge する | DevelopersIO

Creating an array from objects? · Issue #684 · stedolan/jq – GitHub

How to merge 2 json file using jq? – Stack Overflow

-r オプション

参考:

How to convert embedded (quoted) json string to json – Unix & Linux Stack Exchange

-S オプション

オブジェクトのプロパティをキーの順序でソートする。

参考:

jq sorts KEY and VALUES in different way – how can I enumerate them in the same order? – Stack Overflow

jq should have an option not to sort keys · Issue #1364 · stedolan/jq – GitHub

-n オプション

参考:

jq を使って平文の JSON をシェルコマンドだけでいい感じにエスケープする | コード日進月歩

reduce

オブジェクトの配列をマージして一つのオブジェクトにまとめる。

$ echo '[
    { "a": "1" },
    { "b": "2" },
    { "c": "3" }
  ]' \
  | jq "reduce .[] as \$obj ( {} ; . + \$obj )"
{
  "a": "1",
  "b": "2",
  "c": "3"
}

参考:

Merge objects into one · Issue #1016 · stedolan/jq – GitHub

add

参考:

Reducing JSON with jq – Stack Overflow

del

オブジェクトから指定したプロパティを削除する。

$ echo '{ "a": "1", "b": "2", "c": "3" }' | jq "del(.a)"
{
  "b": "2",
  "c": "3"
}

階層をたどってプロパティを削除する。

$ echo '{
    "deep": { "a": "1", "b": "2", "c": "3" }
  }' \
  | jq "del(.deep.a)"
{
  "deep": {
    "b": "2",
    "c": "3"
  }
}

参考:

Deleting keys from objects? · Issue #323 · stedolan/jq – GitHub

Removing a key from parent object with jq – Stack Overflow

map

map して作成したオブジェクトをマージして一つのオブジェクトにまとめる。

$ echo '[
    { "key": "a", "value": "1" },
    { "key": "b", "value": "2" }
  ]' \
  | jq "map({ (.key): (.value) }) | add"
{
  "a": "1",
  "b": "2"
}

参考:

QUESTION: A way to concatenate input objects into one · Issue #70 · stedolan/jq – GitHub

プロパティ (文字列) の連結

参考:

Concat 2 fields in JSON using jq – Stack Overflow

プロパティを追加する

参考:

Add a new element to an existing JSON array using jq – Stack Overflow

プロパティの値を変更する

  • |=
  • +=
  • -=
  • *=
  • /=
  • %=
  • //=
  • =

値を変更する。

$ echo '{
    "deep": { "a": "1", "b": "2", "c": "3" }
  }'   | jq ".deep.a |= \"101\""
{
  "deep": {
    "a": "101",
    "b": "2",
    "c": "3"
  }
}

参考:

Update-assignment:|= | jq Manual (development version) [Official]

Arithmetic update-assignment: +=, -=, *=, /=, %=, //= | jq Manual (development version) [Official]

Plain assignment: = | jq Manual (development version) [Official]

Complex assignments | jq Manual (development version) [Official]

keys / values / to_entries

参考:

Extract keys using JQ | mheap

Handle large JSONs effortlessly with jq | Leonid Shevtsov

How to use `jq` to obtain the keys – Stack Overflow

print key and value for each entry in an object – Stack Overflow

jq print key and value for all in sub-object – Unix & Linux Stack Exchange

sort_by

参考:

jq で sort する – Qiita

Sorting JSON by Value with JQ (Command Line JSON Processor) | Big Datums

type

参考:

How to get root keys and key types using jq – Stack Overflow

@uri

参考:

jq を使って平文の JSON をシェルコマンドだけでいい感じにエスケープする | コード日進月歩

ビルトイン関数

参考:

jq/builtin.jq at master · stedolan/jq – GitHub

as

値に名前を付けて変数として参照する。

... as $variable_name | ...

配列の要素の平均値を計算する。

$ echo "[4,6,8]" \
  | jq "length as \$length | add / \$length"
6

参考:

Variable / Symbolic Binding Operator: … as $identifier | … | jq Manual (development version) [Official]

jq print key and value for all in sub-object – Unix & Linux Stack Exchange

walk

参考:

how to add an object, key/value in a nested json tree with arrays – Stack Overflow

Tips

参考:

シェル芸で使いたい jq イディオム – Qiita

jq コマンドで覚えておきたい使い方17個 | 俺的備忘録 〜なんかいろいろ〜

jq recipes | Remy Sharp’s b:log

jq examples | reddit

Tagged:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です