合并多个 JSON 文件并在生成的对象中包含每个文件的文件名
Merge multiple JSON files and include filename of each file in the resulting object
我有数百个文件被命名为 [guid]。json 它们的结构看起来都类似于:
{
"Active": true,
"CaseType": "CaseType",
"CustomerGroup": ["Core", "Extended"]
}
首先,我需要将一个新的键值对附加到所有具有 "CaseId": "[filename]"
的文件,然后将它们全部合并到一个大数组中,并将其保存为一个新的 json 清单文件。
我想要一个来自 jq 命令的具有以下结构的文件:
[
{
"Active": true,
"CaseType": "CaseType",
"CustomerGroup": ["Core", "Extended"],
"CaseId": "43d47f66-5a0a-4b86-88d6-1f1f893098d2"
},
{
"Active": true,
"CaseType": "CaseType",
"CustomerGroup": ["Core", "Extended"],
"CaseId": "e3x47f66-5a0a-4b86-88d6-1f1f893098d2"
}
]
您正在寻找 input_filename
。
jq -n '[ inputs | .CaseId = input_filename ]' *.json
您可以使用 reduce
一次添加一个输入对象。使用 input_filename
获取 UTF-8 编码的文件名并使用 CaseId
形成记录
jq -n 'reduce inputs as $d (null; . + [ $d + { CaseId: input_filename } ] )' *.json
我有数百个文件被命名为 [guid]。json 它们的结构看起来都类似于:
{
"Active": true,
"CaseType": "CaseType",
"CustomerGroup": ["Core", "Extended"]
}
首先,我需要将一个新的键值对附加到所有具有 "CaseId": "[filename]"
的文件,然后将它们全部合并到一个大数组中,并将其保存为一个新的 json 清单文件。
我想要一个来自 jq 命令的具有以下结构的文件:
[
{
"Active": true,
"CaseType": "CaseType",
"CustomerGroup": ["Core", "Extended"],
"CaseId": "43d47f66-5a0a-4b86-88d6-1f1f893098d2"
},
{
"Active": true,
"CaseType": "CaseType",
"CustomerGroup": ["Core", "Extended"],
"CaseId": "e3x47f66-5a0a-4b86-88d6-1f1f893098d2"
}
]
您正在寻找 input_filename
。
jq -n '[ inputs | .CaseId = input_filename ]' *.json
您可以使用 reduce
一次添加一个输入对象。使用 input_filename
获取 UTF-8 编码的文件名并使用 CaseId
jq -n 'reduce inputs as $d (null; . + [ $d + { CaseId: input_filename } ] )' *.json