Join 保留在单独列表中找到的行

Join 保留在单独列表中找到的行,join,awk,sed,grep,Join,Awk,Sed,Grep,我有两个文件 文件1: ##HEADER######################### ##HEADER######################### 1 69078 70017 + . 1 324295 324394 + . 1 324428 325605 + . 1 327735 328214 + . 1 367646 368605 + .

我有两个文件

文件1:

##HEADER#########################
##HEADER#########################
1       69078   70017   +       .
1       324295  324394  +       .
1       324428  325605  +       .
1       327735  328214  +       .
1       367646  368605  +       .
1       621093  622042  +       .
1       664485  665108  +       .
1       721405  721918  +       .
1       762080  762571  +       .
1       861308  861407  +       .
1       865533  865718  +       .
1       866395  866494  +       .
和文件2:

1       69078   70017  
1       324295  324394
1       762080  762571
1       861308  861407
1       865533  865718
我想保留文件1中与文件2中的第2列和第3列匹配的行。产生此输出(包括将头保留在文件1中):

非常感谢

我已尝试使用此代码:

join --header -1 2 -2 2 file1 file2 > output
但它无法识别多个标题行,并创建多个列,而不仅仅是显示的列。

您可以使用此awk:

 awk '{key = $2 OFS $3} NR == FNR{seen[key]; next} FNR <= 2 || key in seen' file2 file1
您可以使用此awk:

 awk '{key = $2 OFS $3} NR == FNR{seen[key]; next} FNR <= 2 || key in seen' file2 file1

因此,我们鼓励用户在问题中以代码的形式添加他们的努力,因此请在您的问题中添加相同的努力,并让我们知道,干杯。抱歉@RavinderSingh13,谢谢您Kamil我已尝试使用加入更新。但是我也尝试过:``sed-E-i.bak's/[:blank:]+$/这是我知道答案的问题之一,但它非常简单,我真的觉得提问的人应该自己解决它。因此,我们鼓励用户在他们的问题中添加代码形式的努力,因此,请在您的问题中添加相同的内容,并让我们知道,干杯。抱歉@RavinderSingh13,谢谢您Kamil我已尝试使用加入更新。但是我也尝试过:``sed-E-i.bak/[:blank:]+$/这是我知道答案的问题之一,但它非常简单,我真的觉得提问的人应该自己解决它。
##HEADER#########################
##HEADER#########################
1       69078   70017   +       .
1       324295  324394  +       .
1       762080  762571  +       .
1       861308  861407  +       .
1       865533  865718  +       .