我有一个CSV它看起来像这样*多个文件:拆分一个CSV到基于字段值
system,subject,value1,value2
example.org,thing 1,100,4
exmaple.org,thing 2,90,0
example.com,thing 1,200,0
example.com,thing 5,10,10
页眉我们实际上不包括在内,但在这里显示,使其更易于阅读的例子。
我想拆分成两个文件:
example.org.csv有:
thing 1,100,4
thing 2,90,0
example.com.csv有:
thing 1,200,0
thing 5,10,10
我目前的解决方案以这种方式工作:
while read line; do
SYSTEM=$(echo "$line" | cut -d, -f1)
NOTTHESYSTEM=$(echo "$line" | cut -d, -f2-)
echo "${NOTTHESYSTEM}" >> "${SYSTEM}.csv"
done <$INPUT
但是这样做效率非常低,并且对于更大的文件表现不佳。
在数字上,这意味着52050行/ 9 MB文件需要大约250秒来完成拆分。
任何建议如何改善上面的脚本是值得欢迎的。
干杯
快得多 - 谢谢。这现在运行在0.3秒而不是250秒。 – pagid
是否可以使用此方法添加gzip阶段,以便所有输出文件都能被压缩? – Sahas
只是将输出重定向到一个文件并调用'gzip'来压缩它。 – anubhava