Join 保留在单独列表中找到的行
我有两个文件 文件1: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 + .
##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 + .