由于您没有大量可能的值要检查,因此在awk中很容易做到(在文件2中有太多行会导致在将行写入适当的文件时耗尽可用的文件描述符,但是160应该是好的):
$ awk 'NR == FNR { contig[$1] = 1; print "...\t...\tRNAME\t...\t...\t...\tRNEXT" > "contig" $1; next } $3 in contig { print > "contig" $3 } $7 in contig { print > "contig" $7 }' file2 file1