Han*_* Z. 13
这应该给你一个开始:
for f in `cat input.json | jq -r 'keys[]'` ; do
cat input.json | jq ".$f" > $f.json
done
Run Code Online (Sandbox Code Playgroud)
或者当你坚持使用更像bashy语法时,有些人似乎更喜欢:
for f in $(jq -r 'keys[]') ; do
jq ".[\"$f\"]" < input.json > "$f.json"
done < input.json
Run Code Online (Sandbox Code Playgroud)
这是一个只需要调用jq的解决方案:
jq -cr 'keys[] as $k | "\($k)\n\(.[$k])"' input.json |
while read -r key ; do
read -r item
printf "%s\n" "$item" > "/tmp/$key.json"
done
Run Code Online (Sandbox Code Playgroud)
将jq命令的输出通过管道传输到awk可能更快,例如:
jq -cr 'keys[] as $k | "\($k)\t\(.[$k])"' input.json |
awk -F\\t '{ print $2 > "/tmp/" $1 ".json" }'
Run Code Online (Sandbox Code Playgroud)
当然,如果键名包含无法在文件名中使用的字符,则需要修改这些方法。
| 归档时间: |
|
| 查看次数: |
13683 次 |
| 最近记录: |