2010-07-25 31 views
2

假设我有两个共享列的制表符分隔文件。这两个文件都有一个标题行,为每列提供了一个标签。什么是一个简单的方法来把两个表结合起来,即从A和B中取出列,但是根据列K的值来做呢?基于列值组合制表符分隔文件

例如,表A中可能是:

employee_id name 
123 john 
124 mary 

和表B中可能是:

employee_id age 
124 18 
123 22 

然后根据表A( “EMPLOYEE_ID”)的第1列的结合应产生表:

employee_id name age 
123 john 22 
124 mary 18 

我想这样做使用Unix实用程序,如“切”等。这怎么可以做?

+0

约翰为什么有18和22没有年龄?错字? – ghostdog74 2010-07-25 01:19:51

回答

4

这是一个开始。我离开你格式化头需要

$ awk 'NR>1{a[$1]=a[$1]" "$2}END{for(i in a)print a[i],i}' tableA.txt tableB.txt 
age employee_id 
john 22 123 
mary 18 124 

另一种方式

$ join <(sort tableA.txt) <(sort tableB.txt) 
123 john 22 
124 mary 18 
employee_id name age 

实验与加入选项需要时(见信息页面或手册页)

5

可以使用join工具,但你的文件需要先排序。

join file1 file2 

man join了解更多信息

1

尝试:

paste file1 file2 > file3