I do have a CSV which looks like this*:
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行/ 9MB的文件需要约250秒才能完成分割。
欢迎提出任何改进上述脚本的建议。
祝好
gzip
压缩它。 - anubhava