2011-06-20 17 views
5

我想要做以下事情,如果有人能幫我實現這一點,我將非常感激:bash - 基於特定列的兩個文件的接口?

我有2個名爲File1.txt和File2.txt的tab-delim文件(如下所示)。 如果在File2.txt的第3列(整數)中找到File1.txt中的第2列(整數),然後 我想製作new_File1.txt和new_File2.txt並繼續追加 行。

FILE1.TXT:

1 80 xyc 
1 304 xyv 
1 813653 xyb 
1 813661 xyn 
1 954653 xym 

FILE2.TXT:

abvb 1 178 
aaa 1 304 
ttt 1 353 
ggg 1 98971 
ghj 1 813653 

因此,例如,我的new_File1.txt看起來像:

new_File1.txt:

1 304 xyv 
1 813653 xyb 

new_File2.txt:

aaa  1 304 
ghj  1 813653 

謝謝大家的幫助! 我用:

join -1 2 -2 3 -t '\t' file1.txt file2.txt 

,但它給了我下面的輸出:

\1  80  xyc\abvb  1  178 
\1  80  xyc\aaa 1  304 
\1  80  xyc\ttt 1  353 
\1  80  xyc\ggg 1  98971 
\1  80  xyc\ghj 1  813653 
\1  304  xyv\abvb  1  178 
\1  304  xyv\aaa 1  304 
\1  304  xyv\ttt 1  353 
\1  304  xyv\ggg 1  98971 
\1  304  xyv\ghj 1  813653 
\1  813653 xyb\abvb  1  178 
\1  813653 xyb\aaa 1  304 
\1  813653 xyb\ttt 1  353 
\1  813653 xyb\ggg 1  98971 
\1  813653 xyb\ghj 1  813653 
\1  813661 xyn\abvb  1  178 
\1  813661 xyn\aaa 1  304 
\1  813661 xyn\ttt 1  353 
\1  813661 xyn\ggg 1  98971 
\1  813661 xyn\ghj 1  813653 
\1  954653 xym\abvb  1  178 
\1  954653 xym\aaa 1  304 
\1  954653 xym\ttt 1  353 
\1  954653 xym\ggg 1  98971 
\1  954653 xym\ghj 1  813653 

回答