我正在尝试创建一个awk脚本,该脚本能够根据第3个字段计算连续模式的数量,并且如示例中那样打印第一个和最后一个坐标字段(第2个字段)。
我有一个脚本可以计算我想要的任何坐标窗口中的模式数量,例如:1000000将数据置于中间位置:
awk '{a[$1 FS 1000000*int(($2-1)/1000000)+500000]++} END{for(k in a) print k,a[k]}' file
然而,无论是1/1还是0/1,它都在计算所有模式的数量。
17 38172452 1/1
17 38172942 1/1
17 38172973 1/1
17 38173143 0/1
17 38176256 0/1
17 38176476 1/1
17 38178149 0/1
17 38178627 0/1
17 38179275 0/1
17 38179290 0/1
17 38179492 0/1
17 38179667 1/1
17 38182229 0/1
17 38183090 0/1
17 38183505 0/1
17 38188419 0/1
17 38188844 0/1
17 38189049 0/1
预期结果:
17 38172452 38172973 3 1/1
17 38173143 38176256 2 0/1
17 38178149 38179492 5 0/1
17 38182229 38189049 6 0/1
你能帮助我吗?
答案 0 :(得分:1)
假设$1
没有改变......
awk '{if(p==$3) {c++; e=$2}
else {if(c>1) print $1,b,e,p,c;
b=$2; c=1; p=$3}}
END {print $1,b,$2,p,c}' file