我有一個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