尝试使用awk
将$5
的值存储在数组file1
的{{1}}中。然后使用该数组x
搜索x
$4
以找到匹配项(我使用x [2]跳过file1中的标题)。由于file1
可以在其中分隔多个字符串$4
(逗号),因此我将它们拆分并迭代以查找匹配项。然后将每个拆分存储在数组中,并与,
进行比较以进行匹配。在下面的示例中,所有x[2]
值都是matc,但情况并非总是如此。模式$4
将从每个匹配的c.
中提取并存储为VAL
。下面的$4
有望这样做但我正在努力的地方是awk
$6
更新,file1
和$2
以及数组值必须与$3
中的$4
和$5
以及$6
匹配。如果确实如此,那么file2
中的$6
将使用file1
中$1
和$2
的值进行更新。第4行是一个示例,因为file2
匹配数组NM_000138.4
,x[2]
值与c.
(冒号)匹配:
$6
}}。因此,file2
中的所有条件都会更新$6
。除了file1
中的c.
值与VAL
中的$6
不匹配外,Line2满足所有要求,因此file2
不会更新。我希望这是一个良好的开端,我并没有过于复杂的事情(尽管我可能有,并且可能有更好的方法)。我没有对file1
进行测试,但将其作为一个说明点,对我的想法进行了评论。谢谢你:)。
file1 awk
tab-delimited
file2 R_Index Chr Start AAChange.refGeneWithVer MajorTranscript HGMD C1 C2
1 chr15 48720526 FBN1:NM_000138.4:exon57:c.6997+17C>G:p.? NM_000138.4 . . .
2 chr15 48741091 FBN1:NM_000138.4:exon46:c.5546-1G>A:p.? NM_000138.4 . . .
3 chr15 48807637 FBN1:NM_000138.4:exon12:c.1415G>A:p.Cys472Tyr NM_000138.4 . . .
4 chr15 48741091 FBN1:NM_000138.4:exon46:c.5546-1G>A:p.?,FBN1:NM_000138.4:exon46:c.5546-1G>T:p.? NM_000138.4 . . .
tab-delimited
所需的输出 HGMD ID Class Gene Symbol chromosome start hgvs
CS057007 DM FBN1 chr15 48797346 c.1838-2A>G
CS057008 DM FBN1 chr15 48741091 c.5546-1G>T
tab-delimited
AWK
R_Index Chr Start AAChange.refGeneWithVer MajorTranscript HGMD C1 C2
1 chr15 48720526 FBN1:NM_000138.4:exon57:c.6997+17C>G:p.? NM_000138.4 . . .
2 chr15 48741091 FBN1:NM_000138.4:exon46:c.5546-1G>A:p.? NM_000138.4 . . .
3 chr15 48807637 FBN1:NM_000138.4:exon12:c.1415G>A:p.Cys472Tyr NM_000138.4 . . .
4 chr15 48741091 FBN1:NM_000138.4:exon46:c.5546-1G>A:p.?,FBN1:NM_000138.4:exon46:c.5546-1G>T:p.? NM_000138.4 CS057008 DM . .
答案 0 :(得分:1)
请您试着跟随并告诉我这是否对您有帮助。
emcc -Idir1 -Idir2 ... foo.c
现在也添加一个非单一的衬垫形式。
awk 'FNR==NR{a[$NF]=$1 OFS $2;next} {split($4,array,":");for(i in array){if(array[i] in a){print $0,a[array[i]];next}}} 1' Input_file2 Input_file1