次の形式のjsonファイルがたくさんあります。
サンプルfile1
:
{
"attributes": [
{
"name": "Node",
"value": "test"
}
]
}
サンプルfile2
:
{
"attributes": [
{
"name": "version",
"value": "11.1"
}
]
}
など。
たとえば、それらをすべて1つのjsonファイルにマージする必要があります。
{
"attributes": [
{
"name": "Node",
"value": "test"
},
{
"name": "version",
"value": "11.1"
}
]
}
誰でもjqのソリューションを提供できますか?
ベストアンサー1
jq
解決策:
jq -s '{ attributes: map(.attributes[0]) }' file*.json
-s
(--slurp
) - それぞれに対してフィルタを実行する代わりにJSON入力のオブジェクトは、入力ストリーム全体を大きな配列として読み込み、フィルタを一度だけ実行します。
出力例:
{
"attributes": [
{
"name": "Node",
"value": "test"
},
{
"name": "version",
"value": "11.1"
}
]
}