jqコマンドで複数JSONファイルをマージ結合する方法 / how to merge json files using jq

Nid: 81
  • Posted on: 3 July 2014
  • By: nayeli

入力ファイル 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": [
      "ヨーロッパ",
      "フランス",
      "パリ",
      "外国",
      "海外",
      "異国",
      "ノートルダム大聖堂",
      "ゴシック建築",
      "建物",
      "シテ島",
      "ローマ・カトリック教会",
      "世界遺産",
      "文化遺産",
      "礼拝",
      "信仰",
      "神秘的",
      "神聖",
      "彫刻",
      "アーチ型",
      "青空",
      "旅行",
      "観光",
      "名所"
    ]
  }
]