我的目录充满了具有以下结构的json文件 例如:file1
{
"products": [
{"f1": "v1"},
{"f1": "v2"}
]
}
file2:
{
"products": [
{"f1": "v3"},
{"f1": "v4"}
]
}
“。products”的内容与示例中的内容不同,但是我们可以假定它们是格式正确的更复杂的json值。
我想产生一个具有以下结构的文件:
[
{"f1": "v1"},
{"f1": "v2"},
{"f1": "v3"},
{"f1": "v4"}
]
关于如何使用jq执行此操作的任何想法?
答案 0 :(得分:1)
您可以使用以下内容:
jq --slurp 'map(.products[])' /path/to/dir/*.json
其中/path/to/dir/*.json
应该是文件列表,或者是bash glob,它将扩展到您要使用的JSON文件列表中。例如,对于当前目录中的两个文件file1
和file2
,您可以使用file{1,2}
,也可以使用file1 file2
,这就是先前的glob将被扩展到的文件。
--slurp
标志告诉jq
读取数组中的所有输入,而不是分别处理它们。然后,我们将此数组的每个对象(文件的原始内容)映射到它们的乘积序列中。