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的行,是不是我忽略了某个命令行的参数,感谢回答。
展开
 我来答
Linux百科
2019-07-25 · TA获得超过440个赞
知道小有建树答主
回答量:997
采纳率:72%
帮助的人:77万
展开全部
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相关知识
匿名用户
2019-07-25
展开全部
awk '{for(i=1; i<=NF;++i){if($i==1||$i==3||$i==0){num[$i]++}}for(key in num){printf "%d:%d\t",key,num[key]}printf "\n"}'
追问

让上图达到下图的结果

简而言之就是按顺序统计每一行 3 2 1 0的个数 并在该行后面显示出来

追答
awk '{for(key in num){num[key]=0}for(i=1; i=0;--i){printf "%d ",num[i]}printf "\n"}'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式