zoukankan      html  css  js  c++  java
  • 用Python正则表达式搜索统计命令行管道中的所有数字

    由于最近经常要对庞大的Android代码进行统计,于是写了一个Python脚本,可以把命令行中输出的所有管道数据中的数字找出来,并进行累加等操作,使用起来非常快捷高效。

    例如,我希望统计Android frameworks目录中所有java/c/cpp/h代码文件的总行数,那么可以这样:

    1. 用find命令搜索出所有代码文件:

    find ./frameworks -iname "*.java" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.c"


    2. 用wc -l命令统计所有搜索出来的代码的行数:

    find ./frameworks -iname "*.java" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.c" | xargs wc -l

    上边这个命令行会输出搜索到的每个文件的行数,并且文件数达到一定数量后会输出一个”总用量“。

    3. 用grep命令把以上统计输出的带”总用量“的输出行过滤出来:

    find ./frameworks -iname "*.java" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.c" | xargs wc -l | grep "总用量"

    输出结果:

      384002 总用量
      725006 总用量
      591547 总用量
      653540 总用量
      666876 总用量
      326548 总用量


    4. 用自己写的Python脚本把上边输出的所有数字过滤出来并累加:

    Python脚本sum_all_numbers.py:

    #!/usr/bin/python
    # coding=utf-8
    
    import sys;
    import re
    
    items = []
    for name in sys.stdin.readlines(): #从管道中读取每一行数据
      nums = re.findall("d+ ", name) #用正则表达式找出所有数字
      for num in nums:
        items.append(num)
    
    if(len(items)>0):
        print items
    
    sumNum = 0
    for num in items:
      sumNum += int(num) #累加所有数字
    
    print "Total:",sumNum
    


    用这个脚本对命令行管道的输出数据作统计:

    find ./frameworks -iname "*.java" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.c" | xargs wc -l | grep "总用量" | python ~/scripts/sum_all_numbers.py

    输出结果:

    ['384002 ', '725006 ', '591547 ', '653540 ', '666876 ', '326548 ']
    Total: 3347519
    


  • 相关阅读:
    Mathematica查看内部定义
    Mathematica绘制曲面交线方法
    Mathematica新特性Inactive, 求解复杂微分方程
    Mathematica修改默认字体
    Mac系统下lipo, ar, nm等工具的使用简介
    centos8 安装php7.2以及php-fpm
    mysql8.0创建用户只能访问某一个数据库
    CentOS 7 yum安装 RabbitMQ
    Linux服务器PHP+MYSQL环境配置优化提升网站运行效率
    PHP 7.1安装xhprof进行性能分析
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3278474.html
Copyright © 2011-2022 走看看