bash - 基于特定列的两个文件的instersection?

RnD*_*RnD 5 bash intersection file

我想做以下事情,如果有人能帮我完成这件事,我真的很感激:

我有两个名为File1.txt和File2.txt的tab-delim文件(如下所示).如果File2.txt中的第二列(整数)在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
Run Code Online (Sandbox Code Playgroud)

FILE2.TXT:

abvb    1   178
aaa 1   304 
ttt 1   353
ggg 1   98971
ghj 1   813653
Run Code Online (Sandbox Code Playgroud)

例如,我的new_File1.txt将如下所示:

new_File1.txt:

1   304 xyv
1   813653  xyb
Run Code Online (Sandbox Code Playgroud)

new_File2.txt:

aaa     1   304
ghj     1   813653
Run Code Online (Sandbox Code Playgroud)

感谢大家的帮助!我用过 :

join -1 2 -2 3 -t '\t' file1.txt file2.txt
Run Code Online (Sandbox Code Playgroud)

但它给了我以下输出:

\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
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 5

你在找join(1).