• 用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
    


  • 相关阅读:
    alter noparallel
    朝代
    asp.net core 发布包含文件
    执行dotnet *.dll启动项目,如何修改环境变量----ASPNETCORE_ENVIRONMENT
    MySQL授权--WITH GRANT OPTION
    js/ts/tsx读取excel表格中的日期格式转换
    linux test tool--"ab"
    nginx代理配置
    docker 容器与本机文件的拷贝操作
    linux系统,没有安装任何编辑器的情况,如何操作文件
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3278474.html
Copyright © 2020-2023  润新知