Saya memiliki dua file - satu adalah file besar yang berisi varian gen, dengan beberapa kolom dipisahkan berdasarkan tab. Kolom yang berisi nama gen dapat berisi satu nama, atau beberapa nama yang dipisahkan dengan koma (contoh nama gen adalah SAMD11 dan NOC2L):
1 874816 874816 - T rs200996316 SAMD11 exonic ENSG00000187634 frameshift insertion
1 878331 878331 C T rs148327885 SAMD11 exonic ENSG00000187634 nonsynonymous SNV
1 879676 879676 G A rs6605067 NOC2L,SAMD11 UTR3 ENSG00000187634,ENSG00000188976
1 879687 879687 T C rs2839 NOC2L,SAMD11 UTR3 ENSG00000187634,ENSG00000188976
1 881918 881918 G A rs35471880 NOC2L exonic ENSG00000188976 nonsynonymous SNV
1 888659 888659 T C rs3748597 NOC2L exonic ENSG00000188976 nonsynonymous SNV
File kedua adalah satu kolom daftar nama gen, seperti ini:
EVC2
SAMD11
COMT
Saya ingin mencocokkan nama gen di file kedua dengan nama gen di file pertama. Saat ini saya menggunakan awk:
awk -F $'\t' 'BEGIN { while(getline <"secondfile.txt") gene[$0]=1; } gene[$7]' firstfile.txt > newfile.txt
Namun, ini hanya mencetak pencocokan persis sehingga tidak mencetak garis dengan NOC2L,SAMD11. Dari contoh di atas, keluaran yang diharapkan adalah empat baris pertama dari file pertama:
1 874816 874816 - T rs200996316 SAMD11 exonic ENSG00000187634 frameshift insertion
1 878331 878331 C T rs148327885 SAMD11 exonic ENSG00000187634 nonsynonymous SNV
1 879676 879676 G A rs6605067 NOC2L,SAMD11 UTR3 ENSG00000187634,ENSG00000188976
1 879687 879687 T C rs2839 NOC2L,SAMD11 UTR3 ENSG00000187634,ENSG00000188976
Saya ingin agar gen tersebut tetap melakukan pencocokan persis, karena beberapa nama gen mungkin serupa - misalnya mungkin ada gen bernama SAMD1, dan jika saya melakukan pencocokan fuzzy untuk itu maka saya akan mendapatkan SAMD1, SAMD11, dan seterusnya. Jadi saya memerlukan sesuatu yang sama persis tetapi mengabaikan koma di kolom nama gen, atau memperlakukannya sebagai pembatas bidang atau serupa.
Terima kasih sebelumnya.