将JSON拆分为多个文件

cmd*_*mdv 4 shell awk json jq

我有从mongodb导出的json文件,看起来像:

{"_id":"99919","city":"THORNE BAY"}
{"_id":"99921","city":"CRAIG"}
{"_id":"99922","city":"HYDABURG"}
{"_id":"99923","city":"HYDER"}
Run Code Online (Sandbox Code Playgroud)

有大约30000行,我想将每行分成它自己的.json文件.(我正在尝试将数据传输到couchbase集群)

我试过这样做:

cat cities.json | jq -c -M '.' | \
while read line; do echo $line > .chunks/cities_$(date +%s%N).json; done
Run Code Online (Sandbox Code Playgroud)

但我发现它似乎放下了线的负载,运行这个命令的输出只给了我50个奇怪的文件,当我期待30000奇数!

是否有一种合理的方法可以使用任何可以套装的数据来删除任何数据?

Mic*_*ior 5

假设您不关心确切的文件名,如果您想将输入拆分为多个文件,请使用split.

jq -c . < cities.json | split -l 1 --additional-suffix=.json - .chunks/cities_
Run Code Online (Sandbox Code Playgroud)

  • 不太有效,我得到`split:非法选项--` :( (2认同)
  • 在 osx 上解决了,您需要安装 coreutils:`brew install coreutils`。然后使用“gsplit”而不是“split”:) (2认同)