python正则匹配统计_用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值