根据 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)}'
我有一个 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)}'