gpt4 book ai didi

awk - 文本进入滑动窗口并计数

转载 作者:行者123 更新时间:2023-12-04 08:43:34 25 4
gpt4 key购买 nike

我有这样的文件(超过 1 个缺少行)

 20     14370   rs6054257 G      A       29   PASS   NS=3;DP=14;AF=0.5;DB;H2           GT:GQ:DP:HQ 0|0:48:1:51,51 
20 17330 . T A 3 q10 NS=3;DP=11;AF=0.017 GT:GQ:DP:HQ 0|0:49:3:58,50
20 1110696 rs6040355 A G,T 67 PASS NS=2;DP=10;AF=0.333,0.667;AA=T;DB GT:GQ:DP:HQ 0|0:21:6:23,27
20 1230237 . T . 47 PASS NS=3;DP=13;AA=T GT:GQ:DP:HQ 0|0:54:7:56,60
20 1234567 GTC G,GTCT 50 PASS NS=3;DP=9;AA=G GT:GQ:DP 0/1:35:4
我需要拆分为滑动窗口并像这样计算“0/0”位置
 Pos     Count 
1-10001 0
2-10002 1
3-10003 0
为了计算每 10000 个职位,我使用了这个 cmd
tail -n +11 file | 
awk -v n=10000 '/0\/0/{c++} NR%n==0{print c; c=0} END {if (NR%n!=0) print c}'

最佳答案

第一个解决方案:完全基于您展示的尝试,用 GNU 编写 awk .由于样本中没有 0/0 值,因此无法进行太多测试,应该可以通过。拍摄 tail来自 OP 尝试本身的命令。

tail -n +11 Input_file | 
awk -v n="10000" '
NR%n==0{
++occur
print n+occur,count
count=""
}
/0\/0/{
count++
}
END{
++occur
if(count){ print n+occur }
}
'

第二种解决方案:如果您多次出现 0/0在您的行中,并且您想计算每行中的所有内容,然后尝试遵循与第一个解决方案略有不同的方法。
tail -n +11 Input_file | 
awk -v n="10000" '
NR%n==0{
++occur
print n+occur,count
count=""
}
{
count+=gsub(/0\/0/,"&")
}
END{
++occur
if(count){ print n+occur }
}
'

关于awk - 文本进入滑动窗口并计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64443800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com