zoukankan      html  css  js  c++  java
  • 打印每一行出现的数字个数

    题目描述
    写一个 bash脚本以统计一个文本文件 nowcoder.txt中每一行出现的1,2,3,4,5数字个数并且要计算一下整个文档中一共出现了几个1,2,3,4,5数字数字总数。
    
    
    
    示例:
    假设 nowcoder.txt 内容如下:
    a12b8
    10ccc
    2521abc
    9asf
    你的脚本应当输出:
    line1 number: 2
    line2 number: 1
    line3 number: 4
    line4 number: 0
    sum is 7
    
    说明:
    不要担心你输出的空格以及换行的问题
    

    方法一

    num=1
    sum=0
    while read line
    do
    	cnt=0
    	for((i=0;i<${#line};i++))
    	do
    		if [[ ${line:i:1} = '1' ]] || [[ ${line:i:1} = '2' ]] || [[ ${line:i:1} = '3' ]] || [[ ${line:i:1} = '4' ]] || [[ ${line:i:1} = '5' ]];then
    			cnt=$((cnt+1))
    		fi
    	done
    	echo "line${num} number: ${cnt}"
    	num=$((num+1))
    	sum=$((sum+cnt))
    done < nowcoder.txt
    echo "sum is ${sum}"
    

    方法二

    awk '
    	{
    		count=0;
    		len=length($0);
    		for(i=1;i<=len;i++)
    		{
    			s=substr($0,i,1)
    			if(0<s && s<6)
    			{
    				total++;
    				count++;
    			}
    		}
    		printf("line%d number:%d
    ",NR,count);
    	}
    	END{ printf("sum is %d
    "),total}
    ' nowcoder.txt
    

    方法三:

    awk -F "" '{count=0;for(i=1;i<=NF;i++) {if($i>=1&&$i<=5) count++}sum+=count; print "line"NR" number:"count}END{print "sum is "sum}' nowcoder.txt
    
    

    方法四:

    awk 'BEGIN{sum=0}{
      count = split($0,line,"");
      line_sum=0
      for(i=0;i<count;i++){
        if(match(line[i],/[1-5]/)){
          line_sum++;
          sum++;
        }
      }
      print "line"NR,"number:"line_sum;
    }END{print "sum is",sum}'
    
    
  • 相关阅读:
    JAVA向上转型和向下转型
    LeetCode记录之9——Palindrome Number
    LeetCode记录之7——Reverse Integer
    JAVA数据结构--插入排序
    JAVA数据结构--选择排序
    JAVA数据结构--冒泡排序
    HTTP协议04-返回状态码
    HTTP协议03-http特点及请求方式
    HTTP协议02-请求和响应的报文构成
    HTTP笔记01-http相关的基础知识
  • 原文地址:https://www.cnblogs.com/chenjo/p/14545435.html
Copyright © 2011-2022 走看看