0

我有一个问题,我正在尝试使用 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

4

1 回答 1

3

http://ideone.com/h6oEI

{
        if ($1 != last1 || abs($2-last2) > 60 ) print   
        last1 = $1; last2 = $2
}

function abs(x){
        return x > 0 ? x : -x
}
于 2012-04-18T13:27:14.180 回答