jq コマンド
参考:
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
使い方
参考:
整形された 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
まとめ
参考:
整形
参考:
-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 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
参考:
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
参考:
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
参考:
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 コマンドで覚えておきたい使い方17個 | 俺的備忘録 〜なんかいろいろ〜