我有多个文件(10+)要合并/加入到一个输出文件中,例如:
文件 1
2000 0.0202094
2001 0.0225532
2002 0.02553
2003 0.0261099
2004 0.0280311
2005 0.028843
文件 2
2000 0.0343179
2001 0.036318
2003 0.039579
2004 0.0412106
2005 0.041264
文件 3
2004 0.068689
2005 0.0645474
所有文件都具有相同的两列长度不等。
所需的输出将是:
file1 file2 file3
2000 0.0202094 0.0343179
2001 0.0225532 0.036318
2002 0.02553
2003 0.0261099 0.0395799
2004 0.0280311 0.0412106 0.0686893
2005 0.028843 0.041264 0.0645474
我尝试了以下代码,但是这些值与第一列不一致:
awk '{printf($1); for(i=2;i<=NF;i+=2) printf ("\t%s", $i); printf "\n"}' <(paste file*) > mergedfile.txt
通过对第一列条目进行分组,您可以
awk
一次运行所有这些文件。该部分map[$1]?(map[$1] FS $2):($2)
是一个三元语句,如果它是空的,则添加到由 索引的数组映射$1
,如果它是非空的,则附加到已经存在的值。为了使输出比由 产生的输出更具可读性,将输出
awk
管道化为通过以下脚本完成
输出