如何聚合文件或合并

时间:2015-07-22 13:44:38

标签: linux r awk

任何人都可以通过公共数据(列)帮助合并不同的文件吗?请=(

file1.txt

ID   Kg   Year   
3454  1000  2010
3454  1200  2011
3323  1150  2009
2332  1000  2011
3454  1156  201

file2.txt

ID    Place
3454  A1
3323  A2
2332  A6
5555  A9

file 1+2

ID     Kg   Year Place
3454  1000  2010 A1
3454  1200  2011 A1
3323  1150  2009 A2
2332  1000  2011 A6
3454  1156  2013 A1

所以第二个文件应该先连接到第一个文件。正如你可以看到文件2中的ID 5555没有使用。

如何在linux或....中执行此操作。

2 个答案:

答案 0 :(得分:2)

如果从排序文件开始,该工具为join。在您的情况下,您可以即时排序。

join <(sort file1.txt) <(sort file2.txt)

标题也将加入,但不会出现在顶部。管道到sort -r

答案 1 :(得分:1)

如果您不关心维持行的顺序,请使用karakfa的join命令。

要保持行的原始顺序,请使用awk

awk '
    NR==FNR {place[$1]=$2; next}
    $1 in place {print $0, place[$1]}
' file2.txt file1.txt | column -t
ID    Kg    Year  Place
3454  1000  2010  A1
3454  1200  2011  A1
3323  1150  2009  A2
2332  1000  2011  A6
3454  1156  201   A1