在Mac上使用bash合并基于公共列的CSV

时间:2015-09-05 15:01:42

标签: macos bash csv

下面的bash代码用于16个CSV文件的分层合并(每年一个,每个大约5 GB)。它基于这个论坛的答案"Joining 2 CSV files based on common field name"但是,它很慢。有什么改进的想法吗?多处理还是这样? (我有八核和16 GB RAM的mac)

@Override

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

尝试用此替换所有连接线:

join -a1 -t';' $csv2000 $csv2001 > $temp01_csv &
join -a1 -t';' $csv2002 $csv2003 > $temp02_csv &
join -a1 -t';' $csv2004 $csv2005 > $temp03_csv &
join -a1 -t';' $csv2006 $csv2007 > $temp04_csv &
join -a1 -t';' $csv2008 $csv2009 > $temp05_csv &
join -a1 -t';' $csv2010 $csv2011 > $temp06_csv &
join -a1 -t';' $csv2012 $csv2013 > $temp07_csv &
join -a1 -t';' $csv2014 $csv2015 > $temp08_csv
wait

join -a1 -t';' $temp01_csv $temp02_csv > $temp09_csv &
join -a1 -t';' $temp03_csv $temp04_csv > $temp10_csv &
join -a1 -t';' $temp05_csv $temp06_csv > $temp11_csv &
join -a1 -t';' $temp07_csv $temp08_csv > $temp12_csv
wait

join -a1 -t';' $temp09_csv $temp10_csv > $temp13_csv &
join -a1 -t';' $temp11_csv $temp12_csv > $temp14_csv
wait

join -a1 -t';' $temp13_csv $temp14_csv > final.csv

或使用bash的流程替换。