比较两个文件并在匹配后打印匹配行和一些行

时间:2017-02-17 17:02:45

标签: awk

我有两个文件file1.txt和file2.txt。

FILE1.TXT

DS496218    40654   42783   
DS496218    40654   42783
DS496218    40654   42783

FILE2.TXT

###
DS496108    ena gene    99942   102567  .   -       
DS496128    ena mRNA    99942   102567  .   -       
DS496118    ena three_prime_UTR 99942   100571  
###
DS496218    ena gene    40654   42783   .   -       
DS496108    ena mRNA    99942   102567  .   -       
DS496108    ena three_prime_UTR 99942   100571      
###
DS496128    ena gene    99942   102567  .   -       
DS496133    ena mRNA    99942   102567  .   -       
DS496139    ena three_prime_UTR 99942   100571  
###

我想将file1.txt的第1,2和3列与file2.txt的第1,4和5列匹配。如果匹配,请将匹配的行与以下行打印到###,但不要打印###。我试着用awk'

中的命令
awk -F'\t' 'NR==FNR{c[$1$2$3]++;next};c[$1$4$5] > 0' file1.txt file2.txt > out.txt. 

1 个答案:

答案 0 :(得分:0)

没有看到你的预期输出就是猜测,但听起来这就是你想要的:

awk '
NR==FNR { a[$1,$2,$3]; next }
($1,$4,$5) in a { found=1 }
/^###/ { found=0 }
found
' file1 file2