2016-08-15 104 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" -