我有一个问题,我正在尝试使用awk来解决。它可用于选择优质的单核苷酸多态性(SNP)放置在SNP芯片上,其中要求SNP不在另一个SNP的60bp内。该文件如下所示:
comp1008_seq1 20
comp1008_seq1 234
comp1008_seq1 260
comp1008_seq1 500
comp3044_seq1 300
comp3044_seq1 350
comp3044_seq1 460
comp3044_seq1 600
................
当我们来自同一个组件时(基于字段1),我只想打印不在+ -60范围内的记录(基于字段2)。因此,当它们来自不同的组件(基于字段1)时,它们是否在+ -60范围内无关紧要。上例中的输出应如下所示:
comp1008_seq1 20
comp1008_seq1 234
comp1008_seq1 500
comp3044_seq1 300
comp3044_seq1 460
comp3044_seq1 600
答案 0 :(得分:3)
{
if ($1 != last1 || abs($2-last2) > 60 ) print
last1 = $1; last2 = $2
}
function abs(x){
return x > 0 ? x : -x
}