jqコマンドで複数JSONファイルをマージ結合する方法 / how to merge json files using jq
Nid: 81
入力ファイル test1.json, test2.json, test3.json
$ cat test1.json [ { "title": "フランスパン", "tag": [ "パン", "フランス", "丸皿" ] } ] $ cat test2.json [ { "title": "サモトラケのニケ", "tag": [ "ヨーロッパ", "フランス", "パリ", "外国", "ルーブル美術館", "国立美術館", "サモトラケのニケ", "彫像", "ギリシア文明", "歴史", "美術", "芸術", "旅行", "観光", "名所" ] }, { "tag": [ "外国", "ヨーロッパ", "フランス", "パリ", "名所", "観光", "観光地", "夜景", "ライトアップ", "アート", "芸術", "景観" ], "title": "夜の凱旋門" } ] $ cat test3.json [ { "tag": [ "外国", "ヨーロッパ", "フランス", "パリ", "観光", "旅行", "建築物", "橋", "川", "水", "植物", "自然", "空", "雲", "晴天", "天気" ], "title": "パリの橋" }, { "tag": [ "外国", "ヨーロッパ", "フランス", "パリ", "観光", "観光地", "旅行", "見物", "名所", "ルーブル美術館", "芸術", "美術", "アート", "建物", "建築", "装飾", "歴史" ], "title": "ルーブル美術館" }, { "tag": [ "ヨーロッパ", "フランス", "パリ", "外国", "海外", "異国", "ノートルダム大聖堂", "ゴシック建築", "建物", "シテ島", "ローマ・カトリック教会", "世界遺産", "文化遺産", "礼拝", "信仰", "神秘的", "神聖", "彫刻", "アーチ型", "青空", "旅行", "観光", "名所" ], "title": "ノートルダム大聖堂" } ]
以下のオプションを使用してJSON結合
--slurp/-s: JSONオブジェクトのフィルタをまとめて実行。
$ jq -s '.[0] + .[1] + .[2]' test1.json test2.json test3.json [ { "tag": [ "パン", "フランス", "丸皿" ], "title": "フランスパン" }, { "tag": [ "ヨーロッパ", "フランス", "パリ", "外国", "ルーブル美術館", "国立美術館", "サモトラケのニケ", "彫像", "ギリシア文明", "歴史", "美術", "芸術", "旅行", "観光", "名所" ], "title": "サモトラケのニケ" }, { "title": "夜の凱旋門", "tag": [ "外国", "ヨーロッパ", "フランス", "パリ", "名所", "観光", "観光地", "夜景", "ライトアップ", "アート", "芸術", "景観" ] }, { "title": "パリの橋", "tag": [ "外国", "ヨーロッパ", "フランス", "パリ", "観光", "旅行", "建築物", "橋", "川", "水", "植物", "自然", "空", "雲", "晴天", "天気" ] }, { "title": "ルーブル美術館", "tag": [ "外国", "ヨーロッパ", "フランス", "パリ", "観光", "観光地", "旅行", "見物", "名所", "ルーブル美術館", "芸術", "美術", "アート", "建物", "建築", "装飾", "歴史" ] }, { "title": "ノートルダム大聖堂", "tag": [ "ヨーロッパ", "フランス", "パリ", "外国", "海外", "異国", "ノートルダム大聖堂", "ゴシック建築", "建物", "シテ島", "ローマ・カトリック教会", "世界遺産", "文化遺産", "礼拝", "信仰", "神秘的", "神聖", "彫刻", "アーチ型", "青空", "旅行", "観光", "名所" ] } ]