Awk 塞德和伯爵

Awk 塞德和伯爵,awk,Awk,我需要将一个文本文件拆分为一个滑动窗口,并需要从每个片段中计算“0/0” 例如,如果我有20行文件,窗口大小为10,命令如下 sed -n '1,11p' input.txt |grep -c "0/0" sed -n '2,12p' input.txt |grep -c "0/0" sed -n '3,13p' input.txt |grep -c "0/0" . . . sed -n '8,18p' input.txt |grep

我需要将一个文本文件拆分为一个滑动窗口,并需要从每个片段中计算“0/0”

例如,如果我有20行文件,窗口大小为10,命令如下

sed -n '1,11p' input.txt |grep -c "0/0"
sed -n '2,12p' input.txt |grep -c "0/0"
sed -n '3,13p' input.txt |grep -c "0/0"
.
.
.
sed -n '8,18p' input.txt |grep -c "0/0"
sed -n '9,19p' input.txt |grep -c "0/0"
但是,如果我有一个大文件,这种方法不会帮助我做同样的事情。有没有办法让这一切自动化

awk -v k=11 -v str="0/0" '{
  cnt += found[NR%k] = index($0,str)>=1;
}
NR>=k {
  print 1+NR-k "-" NR, cnt+0;
  cnt -= found[(NR+1)%k];
}' file
这将调用窗口大小
k
。输出打印行号范围以及其中有多少行包含字符串
str
(使用
index
进行匹配以避免正则表达式匹配)


这将调用窗口大小
k
。输出打印行号范围以及其中有多少行包含字符串
str
(使用
index
进行匹配以避免正则表达式匹配)。

Sed不做数学运算,因此,imho不容易找到仅Sed的解决方案。也许awk就足够了。但是,您编写的推荐正在计算匹配
0/0
的行数(共10行);如果一行中有多个
0/0
,则该值为1,而不是2。您知道吗?另外,您能告诉我们输入文件中的
窗口大小
10和总行数是否总是给我们(询问我们是否可以将其传递给程序)?是的,窗口大小和总行数我们可以输入我需要拆分一个文本文件-,并且需要计算“0/0”请展示上述文件
input.txt
中每个片段的样本数据,以便更好地理解结构并用于测试。此外,请显示预期输出。谢谢。相关:Sed不做数学运算,所以我想不出一个只有Sed的解决方案。也许awk就足够了。但是,您编写的推荐正在计算匹配
0/0
的行数(共10行);如果一行中有多个
0/0
,则该值为1,而不是2。您知道吗?另外,您能告诉我们输入文件中的
窗口大小
10和总行数是否总是给我们(询问我们是否可以将其传递给程序)?是的,窗口大小和总行数我们可以输入我需要拆分一个文本文件-,并且需要计算“0/0”请展示上述文件
input.txt
中每个片段的样本数据,以便更好地理解结构并用于测试。此外,请显示预期输出。谢谢。相关:和