连接 JSON 个文件时排除空输入
Exclude null inputs while concatenating JSON files
我希望使用 jq 将目录中的多个 JSON 文件连接起来。
大多数 JSON 文件看起来像这样
[
{
a: 12,
b: 22,
c: []
}
]
所以为了连接它们,我使用了以下 jq 查询
jq -s '[.[]|.[ ]]' *.json > xyz.json
这似乎工作正常,我得到了预期的串联输出,直到它遇到一个 JSON 文件,其中只写入了 null,当我尝试将它与其他文件串联时,我得到一个错误。
$ cat test.json
null
$ jq -s '[.[]|.[ ]]' xyz.json test.json > y.json
jq: error (at test.json:0): Cannot iterate over null (null)
有没有办法在通过目录连接时排除这个空 JSON 文件?
我必须提到这些 JSON 文件是作为不同 Trivy Image 扫描的输出而生成的,我无法控制输出是什么。
如果其他人以前遇到过这个问题,请帮助我。
只需 select 个数组输入。
jq -n '[inputs | arrays[]]' *.json
如果您不想排除所有非数组而只想排除 null
.
,请使用 select(. != null)
而不是 arrays
我希望使用 jq 将目录中的多个 JSON 文件连接起来。 大多数 JSON 文件看起来像这样
[
{
a: 12,
b: 22,
c: []
}
]
所以为了连接它们,我使用了以下 jq 查询
jq -s '[.[]|.[ ]]' *.json > xyz.json
这似乎工作正常,我得到了预期的串联输出,直到它遇到一个 JSON 文件,其中只写入了 null,当我尝试将它与其他文件串联时,我得到一个错误。
$ cat test.json
null
$ jq -s '[.[]|.[ ]]' xyz.json test.json > y.json
jq: error (at test.json:0): Cannot iterate over null (null)
有没有办法在通过目录连接时排除这个空 JSON 文件?
我必须提到这些 JSON 文件是作为不同 Trivy Image 扫描的输出而生成的,我无法控制输出是什么。
如果其他人以前遇到过这个问题,请帮助我。
只需 select 个数组输入。
jq -n '[inputs | arrays[]]' *.json
如果您不想排除所有非数组而只想排除 null
.
select(. != null)
而不是 arrays