我想有效地将具有始终相同字段名称的大型json重写为csv,而忽略其键。
举一个具体的例子,这是一个大的JSON文件(tempST.json
):
https://gist.githubusercontent.com/pedro-roberto/b81672a89368bc8674dae21af3173e68/raw/e4afc62b9aa3092c8722cdbc4b4b4b6d5bbc1b4b/tempST.json
如果我仅将此JSON中的字段time
,ancestorcount
和descendantcount
重写为CSV,我应该得到:
1535995526,1,1
1535974524,1,1
1535974528,1,2
...
1535997274,1,1
以下脚本tempSpeedTest.sh
将字段time
,ancestorcount
和descendantcount
的值写入csv的每一行:
rm tempOutput.csv
jq -c '.[]' < tempST.json | while read line; do
descendantcount=$(echo $line | jq '.descendantcount')
ancestorcount=$(echo $line | jq '.ancestorcount')
time=$(echo $line | jq '.time')
echo "${time},${ancestorcount},${descendantcount}" >> tempOutput.csv
done
但是该脚本大约需要3分钟才能运行,令人不满意:
>time bash tempSpeedTest.sh
real 2m50.254s
user 2m43.128s
sys 0m34.811s
获得相同结果的更快方法是什么?
答案 0 :(得分:1)
jq -r '.[] | [.time, .descendantcount, .ancestorcount] | @csv' <tempST.json >tempOutput.csv