我正在尝试在file1
中打印与file2
匹配的行。 $1
中的file1
具有存储在数组c中的值,然后在file2
$1
:$2
中查找。这是用于匹配线但不是唯一线的第一个标准。 $5
的{{1}}必须与file1
的{{1}}匹配,如果满足这两个条件且$4
中的file2
为$2
且file1
在SNV 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
答案 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