linux shell脚本中如何统计某一行中某字符出现的个数 10
比如23403111013223411011300323421130000123431000301323442011101023450220011023460221132...
比如
2340 3 1 1 1 0 1 3 2
2341 1 0 1 1 3 0 0 3
2342 1 1 3 0 0 0 0 1
2343 1 0 0 0 3 0 1 3
2344 2 0 1 1 1 0 1 0
2345 0 2 2 0 0 1 1 0
2346 0 2 2 1 1 3 2 2
2347 0 0 3 2 2 1 1 1
下面这几行中,我如何统计2340行中3 ,1 ,0 分别出现的个数,下面的以此类推。
我搜索了了相关命令行如gerp awk 等发现只能提取某个文档中指定字符出现的总数,或者打印出出现一个或者多个字符的指定行,却没法做到单个字符在一行中精确的统计并将其显示打印出来。比如打印出包含2个3,3个3个1的行,是不是我忽略了某个命令行的参数,感谢回答。 展开
2340 3 1 1 1 0 1 3 2
2341 1 0 1 1 3 0 0 3
2342 1 1 3 0 0 0 0 1
2343 1 0 0 0 3 0 1 3
2344 2 0 1 1 1 0 1 0
2345 0 2 2 0 0 1 1 0
2346 0 2 2 1 1 3 2 2
2347 0 0 3 2 2 1 1 1
下面这几行中,我如何统计2340行中3 ,1 ,0 分别出现的个数,下面的以此类推。
我搜索了了相关命令行如gerp awk 等发现只能提取某个文档中指定字符出现的总数,或者打印出出现一个或者多个字符的指定行,却没法做到单个字符在一行中精确的统计并将其显示打印出来。比如打印出包含2个3,3个3个1的行,是不是我忽略了某个命令行的参数,感谢回答。 展开
2个回答
展开全部
1、统计某个字符的个数,以a为例
grep -o a urifle
awk -F "" '{for(i=1;i<=NF;++i) if($i=="a") ++sum}END{print sum}' urfile
#-F ""中间必须要有空格 "a"必须使用双引号,字符串
awk -F "" '{for(i=1;i<=NF;i++)a[$i]++}END{for(j in a) if(j=="c") print a[j]}' urfile
#
2、储存在变量里
echo "0001111" |tr -cd 1 |wc -c
如果有时间可以看看《Linux就该这么学》,里面有各种Linux相关知识
grep -o a urifle
awk -F "" '{for(i=1;i<=NF;++i) if($i=="a") ++sum}END{print sum}' urfile
#-F ""中间必须要有空格 "a"必须使用双引号,字符串
awk -F "" '{for(i=1;i<=NF;i++)a[$i]++}END{for(j in a) if(j=="c") print a[j]}' urfile
#
2、储存在变量里
echo "0001111" |tr -cd 1 |wc -c
如果有时间可以看看《Linux就该这么学》,里面有各种Linux相关知识
2019-07-25
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询