首页 > 试题广场 >

打印每一行出现的数字个数

[编程题]打印每一行出现的数字个数
  • 热度指数:24401 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
写一个bash脚本,统计一个文本文件nowcoder.txt中每一行出现的1~5数字的个数,并且计算一下整个文档中一共出现了几个1~5数字的总数。

示例:
假设 nowcoder.txt 内容如下:
a12b8
10ccc
2521abc
9asf
你的脚本应当输出:
line1 number: 2
line2 number: 1
line3 number: 4
line4 number: 0
sum is 7

说明:
不要担心你输出的空格以及换行的问题
示例1

输入

a12b8
10ccc
2521abc
9asf

输出

line1 number: 2
line2 number: 1
line3 number: 4
line4 number: 0
sum is 7
头像 CoooooooolSun
发表于 2021-09-26 16:50:20
awk -F "[1,2,3,4,5]" 'BEGIN{sum=0}{print "line"NR" number:"(NF-1);sum+=(NF-1)}END{print "sum is "sum}' nowcode 展开全文
头像 可爱的大魔王拿到了ssp
发表于 2021-05-08 13:47:09
#/bin/bash linecount=0 sum=0 count=0 while read line do for (( i=0; i<${#line};i++ )) do if [[ ${line:$i:1} =~ [1-5] ]] t 展开全文
头像 流§云
发表于 2021-09-08 19:11:19
FS定义分隔符为空,shuzi清零,awk是逐行处理用for循环判断一行的每段是否属于1,2,3,4,5 awk 'BEGIN{FS=""} {shuzi=0;for(i=1;i<=NF;i++) {if($i>0&&$i<6) {shuzi+ 展开全文
头像 牛客93109634号
发表于 2022-03-09 19:00:16
while read line; do num=`echo $line |tr -dc [1-5] |wc -c` let col+=1 echo 'line'$col 'number:' $num let sum+=$num done echo "sum is" $ 展开全文
头像 求球
发表于 2022-02-25 16:33:10
cat nowcoder.txt|awk -F "" '{for(i=1;i<=length($0);i++) \ {if($i~/[1-5]/){x[NR]+=1}} \ }END {{for(j=1;j<=NR;j 展开全文
头像 牛客345743075号
发表于 2021-09-17 14:37:48
line=`cat nowcoder.txt | wc -l` u='0' for ((i=1;i<=$line;i++));do num1=`sed -n ''$i'p' nowcoder.txt` num2=`sed -n ''$i'p' nowcoder.txt | tr -d [123 展开全文
头像 aLiVEz
发表于 2024-04-12 15:16:35
#!/bin/bash sum=0 j=0 while read i do let j++ num=$(echo $i | grep -E [1-5] -o |wc -l ) echo "line$j number: $num" let sum=$sum+$n 展开全文
头像 郭富成
发表于 2021-08-19 20:13:30
遍历文件每一行,具体差异主要在针对每一行的处理流程: 1.将单行所有字符单独获取在处理*(solution1,solution2,solution4,solution5) / 正则处理清除其他字符只留下目标数字(solution3)2.单个字符正则匹配,awk形式, if [[ =~ ]] 形式 # 展开全文
头像 拔个牙咯
发表于 2022-04-23 16:11:55
好像awk的语法里边没有类似str[i],这种提取字符串单个字符的语法? 这里只好用substr(...)来提取。 cat nowcoder.txt | awk ' BEGIN{ sum=0; } { count=0; for(i=1;i<length($0);i++){ n=sub 展开全文
头像 阿尔可
发表于 2021-08-27 16:40:45
还没学到grep命令,就直接用-eq判断了;read循环读取每一行;然后获得每行的字符串的长度;然后依次截取其中一个字符;然后判断是否等于12345;最后就是累加求和了; #!/bin/bash row=0 sum=0 while read line do num=0 展开全文

问题信息

难度:
51条回答 1340浏览

热门推荐

通过挑战的用户

查看代码