2016-08-15 100 views
0

我有2个制表符分隔的文件(排序),我想内部联接:UNIX JOIN命令不工作

文件1:

01130164254  01/29/2008 
01130165543  05/16/2011 
01130168864  07/14/2009 
01635163349  11/24/2009 

文件2:

0.11 73379268872 
0.64 67119603398 
0.65 67261704102 
16.11 01635163349 

的第二个文件的第二列和第一个文件的第一列是我想要加入文件的公共列。当我尝试命令:

join -t" " -1 1 -2 1 File 1 File 2 

我得不到输出。但是,当我试试这个命令:

join -t" " -a 2 -a 1 -e 'NULL' -o '0,1.1,1.2,2.1,2.2' File1 File2 

我得到一个结果出了这不幸意味着,UNIX是不是找到了加入文件的公共密钥,因为有文件之间共同的价值观令人惊讶。这是结果的样品看起来像

01635158332 09/09/2016 01635158332 09/09/2016 NULL NULL NULL 
01635163349 11/24/2009 01635163349 11/24/2009 NULL NULL NULL 
16.11 01635163339 NULL NULL 16.11 01635163339 NULL 
16.11 01635163349 NULL NULL 16.11 01635163349 NULL 

正如你可以在上面看到,01635163349是有特定日期具有成本文件1和文件2之间的公共密钥。所以理想的结果应该是

01635163349 11/24/2009 16.11 

此外,文件2是一个完整的转储文件,文件1是一个每日增量文件。

有没有其他方法可以在这两个文件之间创建一个内部连接?请帮忙!!

回答

0

需要对join的输入进行排序关于您加入的字段

sort -t $'\t' "File 2" | 
join -t $'\t' -1 1 -2 1 "File 1" -