jqでJSONオブジェクト/配列内の要素を一行で表示したい

TL;DR

jq--compact-output / -c オプションを使うことで、JSON 内の取得した要素を一行にまとめて表示することができる。

実行例

サンプルファイル

$ cat test.json
{
  "country_list": [ "japan", "china", "us" ],
  "num_list": [ 123, 456, 789 ],
  "mix_list": [ "red", 456, null, true ],
  "array_list": [ [ 89, 89 ], [ 46, 49 ], [ 91, 22 ] ],
  "object_list": [
    { "name": "Nick", "age": 18 },
    { "name": "Andrew", "age": 49 }
  ]
}

配列( JSONArray )の場合

# オプション無し
$ cat test.json | jq .array_list[]
[
  89,
  89
]
[
  46,
  49
]
[
  91,
  22
]

# オプション有り
$ cat test.json | jq --compact-output .array_list[]
[89,89]
[46,49]
[91,22]

オブジェクト( JSONObject )の場合

$ cat test.json | jq -c .object_list[]
{"name":"Nick","age":18}
{"name":"Andrew","age":49}

オプションの詳細

jq 1.5 manual

--compact-output / -c:

By default, jq pretty-prints JSON output. Using this option will result in more compact output by instead putting each JSON object on a single line.

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */