2011-06-20 8 views
5

私はこれを達成するのを助けることができるかどうか本当に感謝します。bash - 特定の列に基づいて2つのファイルのinstection?

私はFile1.txtとFile2.txtという名前の2つのタブデリムファイルを持っています。 File1.txtの2番目の列(整数)がFile2.txtの3番目の列(整数)にある場合は、 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 

を、それは私に次のような出力が得られます: 私が使用しているあなたはjoin(1)を探している

\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 

答えて

5

関連する問題