打印行匹配来自两个具有不同格式的文件的标准

时间:2018-01-04 17:03:20

标签: awk

我正在尝试在file1中打印与file2匹配的行。 $1中的file1具有存储在数组c中的值,然后在file2 $1$2中查找。这是用于匹配线但不是唯一线的第一个标准。 $5的{​​{1}}必须与file1的{​​{1}}匹配,如果满足这两个条件且$4中的file2$2file1SNV or INDEL$3,则会打印file1的匹配行。如果行不匹配则跳过它们。下面的exonic执行但没有输出结果,在这个例子中,应该有一行。我的实际数据是以下格式的数千行。谢谢你:)。

档案1

file1

file2的

awk

AWK

##reference=hg19
##referenceURI=hg19
# locus type    location    function    coding

chr1:11184539   CNV
chr1:11184573   REF exonic
chr1:11189845   REF exonic
chr2:47630550   SNV intronic
chr4:55141050   SNV exonic  synonymous  c.1701A>G
chr4:55141050   INDEL   exonic  nonsynonymous    c.1697_1711delGCCCAGATGGACATG

所需的输出

chr4    55141050    COSM742     c.1696_1713delAGCCCAGATGGACATGAAinsCGC  p.Ser566_Glu571delinsArg
chr4    55141050    COSM12417   c.1697_1711delGCCCAGATGGACATG   p.Ser566_Glu571delinsLy

1 个答案:

答案 0 :(得分:1)

Awk 解决方案:

awk 'NR==FNR{ a[$1":"$2]=substr($4,1,6); next }
     NF>=5 && $2~/SNV|INDEL/ && $3=="exonic" &&
     ($1 in a) && a[$1]==substr($5,1,6)' file2 OFS='\t' file1

输出:

chr4:55141050   INDEL   exonic  nonsynonymous    c.1697_1711delGCCCAGATGGACATG