Compare two files and print matching lines with some lines after match
我有两个文件file1.txt和file2.txt。
文件1.TXT
1 2 3 | DS496218 40654 42783 DS496218 40654 42783 DS496218 40654 42783 |
文件2.TXT
1 2 3 4 5 6 7 8 9 10 11 12 13 | ### 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列匹配。如果匹配,则打印匹配行到
1 | awk -F'\t' 'NR==FNR{c[$1$2$3]++;next};c[$1$4$5] > 0' file1.txt file2.txt > out.txt. |
在没有看到预期输出的情况下,这是一个猜测,但听起来这正是您想要的:
1 2 3 4 5 6 | awk ' NR==FNR { a[$1,$2,$3]; next } ($1,$4,$5) in a { found=1 } /^###/ { found=0 } found ' file1 file2 |