如何根据列匹配从两个输入文件生成输出?

时间:2012-12-06 12:11:16

标签: shell sed awk

输入1

1 886817 2 122 C :0.983607 T :0.0163934

1 886817 3 123 C :2.111 CATTTT :1.11

输入2

1 886817 rs10465241 C T 100 PASS AC = 1573;

1 886817 C CATTTT 874通过AVGPOST = 0.9884;

输出

1 886817 rs10465241 C T 100 PASS AC = 1573; REF = 0.983607; ALT = 0.0163934

1 886817。 C CATTTT 874通过AVGPOST = 0.9884; REF = 2.111; ALT = 1.11

根据粗体列匹配生成输出.REF和ALT值正在添加

1 个答案:

答案 0 :(得分:1)

我想我刚刚回答了this个问题。然而,一些细微的变化:

awk 'FNR==NR { split($5,a,":"); split($6,b,":"); c[$1,$2,a[1],b[1]]="REF=" a[2] ";ALT=" b[2]; next } ($1,$2,$4,$5) in c { print $0 c[$1,$2,$4,$5] }' file1 file2

结果:

1 886817 rs10465241 C T 100 PASS AC=1573;REF=0.983607;ALT=0.0163934
1 886817 . C CATTTT 874 PASS AVGPOST=0.9884;REF=2.111;ALT=1.11