UNIX Join命令无效

时间:2016-08-15 06:39:29

标签: unix join inner-join

我有2个制表符分隔文件(已排序),我正在尝试内连接:

文件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是每日增量文件。

还有其他方法可以在这两个文件之间创建内连接吗?请帮助!!

1 个答案:

答案 0 :(得分:0)

join的输入需要在您加入的字段

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