json - 如何用jq合并两个json文件
问题描述
我有一个包含以下结构的 json 文件的目录,例如:file1
{
"products": [
{"f1": "v1"},
{"f1": "v2"}
]
}
文件2:
{
"products": [
{"f1": "v3"},
{"f1": "v4"}
]
}
“.products”的内容与示例中的不同,但我们可以假设它们是格式良好的更复杂的 json 值。
我想生成一个具有以下结构的文件:
[
{"f1": "v1"},
{"f1": "v2"},
{"f1": "v3"},
{"f1": "v4"}
]
关于如何使用 jq 做到这一点的任何想法?
解决方案
您可以使用以下内容:
jq --slurp 'map(.products[])' /path/to/dir/*.json
where/path/to/dir/*.json
应该是文件列表或bash glob,它将扩展到您要使用的 JSON 文件列表。例如,对于两个文件file1
,file2
您可以在当前目录中使用file{1,2}
,或者只是file1 file2
将前一个 glob 扩展成的内容。
该--slurp
标志告诉jq
读取数组中的所有输入,而不是单独处理它们。然后我们将这个数组的每个对象(文件的原始内容)映射到它们的产品序列中。
推荐阅读
- c# - 使用 CancelAfter 时如何避免任务取消后的 SetResult
- android - 如何使用 Compose 删除 AlertDialog 和标题/文本之间的填充
- javascript - 即使更新了材料表的数据,反应材料表的行数据值也不会更新
- apache-spark - 如何使用 Spark Structured Streaming 更改时区设置?
- python - 为谷歌存储桶创建签名 URL 的问题
- c# - gtk#不在任务栏上显示窗口
- python - 如何检查嵌套列表和嵌套字典中的键:值对是否正确(布尔值)
- python - 如何在熊猫多索引中生成数字字母?
- javascript - 是否可以通过搜索列名以条件格式动态插入自定义公式?
- symfony - 如何使用 symfony 在控制台中生成 SERVER_NAME?