gpt4 book ai didi

json - 使用命令行工具将 JSON 数组拆分为多个文件

转载 作者:行者123 更新时间:2023-11-29 09:10:55 24 4
gpt4 key购买 nike

假设我们有一个长度为 5 的 JSON 数组,我们希望使用 linux 命令行工具将该数组拆分为多个长度为 2 的数组,并将分组的项目保存到不同的文件中。

我尝试使用 jqsplit 工具(我对可以从 bash 脚本执行的任何方法都很满意):

$ echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta_
$ tail -n +1 meta_*
==> meta_000 <==
{"key1":"value1"}
{"key2":"value2"}

==> meta_001 <==
{"key3":"value3"}
{"key4":"value4"}

==> meta_002 <==
{"key5":"value5"}

前面的命令将项目正确保存到文件中,但我们需要将它们转换为有效的 JSON 数组格式。我厌倦了 --filter 选项:

$ echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta2_ --filter='jq --slurp -c -M'
[{"key1":"value1"},{"key2":"value2"}]
[{"key3":"value3"},{"key4":"value4"}]
[{"key5":"value5"}]
$ tail -n +1 meta2_*
tail: cannot open 'meta2_*' for reading: No such file or directory

但是,它会在屏幕上显示输出,但不会保留结果。我尝试转发输出但出现错误:

echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta2_ --filter='jq --slurp -c -M > $FILE'
...
split: with FILE=meta2_000, exit 2 from command: jq --slurp -c -M > $FILE

有什么提示或更好的方法吗?

编辑:我尝试使用双引号 @andlrc 建议:

$ echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta2_ --filter="jq --slurp -c -M > $FILE"
bash: -c: line 0: syntax error near unexpected token `newline'
bash: -c: line 0: `jq --slurp -c -M > '
split: with FILE=meta2_000, exit 1 from command: jq --slurp -c -M >
$ cat meta_000 | jq --slurp -c -M
[{"key1":"value1"},{"key2":"value2"}]

最佳答案

在 jq 过滤器中构建数组,然后每行拆分为文件会更容易。无需额外过滤。

range(0; length; 2) as $i | .[$i:$i+2]

产生:

[{"key1":"value1"},{"key2":"value2"}]
[{"key3":"value3"},{"key4":"value4"}]
[{"key5":"value5"}]

所以把它们放在一起。

$ jq -cM --argjson sublen '2' 'range(0; length; $sublen) as $i | .[$i:$i+$sublen]' \
input.json | split -l 1 -da 3 - meta2_

关于json - 使用命令行工具将 JSON 数组拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com