根据 JSON 的内容创建多个输出文件

Create multiple output files based on the contents of JSON

我有一个 json 数组 objects.I 用 jq 过滤它以获得我想要的数据:

cat [{'name': 'a', 'content': {'nested': 'important content'}}, ...] >> jq ".[]|select(MY_FILTER)|.name,.content.nested"

如何将输出写入多个文件,每个文件名为 {.name}.sql 并包含 {.content.nested}

我试过 echo、tee、--unbuffered 和 --raw,但没有成功

如果您有一个 JSON 对象数组 coming-in,您可以将其通过管道传输到 jq 并使用 awk 之类的工具形成结果文件(请注意也可以使用简单的 bash 循环)

将命令或 JSON 对象数组通过管道传输到以下管道

jq  -cr '.[] | [.name, .content.nested] | join("\t")' | 
  awk -F'\t' '{fname = ".sql"; print  > fname; close(fname)}'

如果您怀疑 \t 出现在您的数据中并想用 non-occuring 字符分隔,请使用 NULL 分隔符作为

jq -cjr '.[] | (.name, "\u0000", .content.nested)' | 
  awk -F'[=11=]' '{fname = ".sql"; print  > fname; close(fname)}'