希望将列中用户定义距离内的数字分组,并将bash中文件中另一列中的相应值相加。 这是示例文件
D seq 1876 A seq 3802 31
D seq 1877 A seq 3803 104
D seq 13691 A seq 14117 15
D seq 13694 A seq 14120 65
因此,如果用户将合并的距离定义为5,那么样本输出将类似于
D,seq,1876-1877,A,seq,3802-3803,135
D,seq,13691-13694,A,seq,14117-14120,85
答案 0 :(得分:0)
这样的东西?
awk -v d=5 '{
a[NR]=$3;
b[NR]=$6
}
(a[NR]-a[NR-1] > d || b[NR]-b[NR-1] > d){
if(NR!=1){
print "D seq",s"-"a[NR-1],"A seq",t"-"b[NR-1],c
};
c=$NF;
s=$3;
t=$6;
next
}
{
c+=$NF
}
END{
print "D seq",s"-"a[NR],"A seq",t"-"b[NR],c'
}' file.txt
其中d
具有距离值。