100a,a,b,c,c
200a,b,c,c,c
300a,c,d,c,c
and 1.csv
100a,Emma,Thomas
200a,Alex,Jason
400a,Sanjay,Gupta
500a,Nisha,Singh
我希望你能够将结果输出为以下格式:
100a,a,b,c,c,Emma,Thomas
200a,b,c,c,c,Alex,Jason
300a,c,d,c,c,0,0
400a,0,0,0,0,Sanjay,Gupta
500a,0,0,0,0,Nisha,Singh
我应该如何在Unix shell脚本或Perl中实现这个功能?我知道Unix中有"join"命令,对于小文件来说这是一个很好的解决方法。例如,为了得到我的结果,我可以这样做:
join -t , -a 1 -a 2 -1 1 -2 1 -o 0 1.2 1.3 1.4 1.5 2.2 2.3 -e "0" 0.csv 1.csv
但是对于我的目的来说,这并不可行,因为我的实际数据文件有超过一百万个列(总数据大小在几千兆字节以上),因此我的Unix命令也会超过一百万个字符。这可能是最重要的头痛之一,因为效率低下的代码很容易被拖垮。
另外,请注意,每当存在缺失数据时都需要一个占位符字符“0”。这防止我简单地使用此操作。
join -t , -a 1 -a 2 -1 1 -2 1 0.csv 1.csv
我也是一个初学Perl编程的人,所以一些细节信息会非常有用。虽然我更倾向于使用Perl或Shell脚本来解决问题,但任何有效的方法都可以。
300a,c,c,c,c,0,0
应该改为300a,c,d,c,c,0,0
吗? - Steve