我正在尝试创建一个 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
你们能帮我解决这个问题吗?
最佳答案
假设 $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
关于linux - 如何使用 awk 查找行中的连续模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124157/