bash – 获取零长度(由中断)

我有一长串的零和零:
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
....

我可以很容易地得到它们之间的平均零数(只有总数/个数):

ones=$(grep -c 1 file.txt)
lines=$(wc -l < file.txt)
echo "$lines / $ones" | bc -l

但是如何获得字符串的长度为零之间的字符串?在上面的简短例子中,它将是:

3
5
5
2
编辑:对于最后一行为0的情况而言是固定的

容易在awk:

awk '/1/{print NR-prev-1; prev=NR;}END{if (NR>prev)print NR-prev;}'

在bash中也不难:

i=0
for x in $(<file.txt); do
  if ((x)); then echo $i; i=0; else ((++i)); fi
done
((i)) && echo $i

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...