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