首页 > PHP资讯 > 工具库 > 详解小程序的python和bash版本比较

详解小程序的python和bash版本比较

工具库
最近有一个小需求:在一个目录下有很多文件,每个文件的第一行是BEGIN开头的,最后一行是END开头的,中间每一行有多列,数量不等,第一列称为"DN", 第二列称为"CV",DN和CV的联合作为主键,现在需要检测文件中是否有重复的DN-CV。

于是写了个简单的python程序

#! /usr/bin/pythonimport osimport syscmd = "cat /home/zhangj/hosts/* | grep -v BEGIN | grep -v END"def check_dc_line(): has_duplicate = False dc_set = set() for dc_line in os.popen(cmd, 'r').readlines():  dc_token = dc_line.split()  dn = dc_token[0]  cv = dc_token[1]  dc = dn + "," + cv  if dc in dc_set:   print "duplicate dc found:", dc   has_duplicate = True  else:   dc_set.add(dc) return has_duplicateif not check_dc_line():    print "no duplicate dc"

对于250个文件,共60万行的数据,过滤一遍约1.67秒

有点不甘心这个效率,于是又写了一个同样功能的shell脚本

#! /bin/bashcat /home/zhangj/hosts/* | grep -v BEGIN | grep -v END | awk ' BEGIN {  has_duplicate = 0 } {  dc = $1","$2;   if (dc in dc_set)   {   print "duplicate dc found", dc    has_duplicate = 1  }   else {   dc_set[dc] = 1  } } END {  if (has_duplicate ==0)  {   print "no duplicate dc found"  } }'

为了进一步比较,重复了10次实验。

以上就是详解小程序的python和bash版本比较的详细内容,更多请关注 第一PHP社区 其它相关文章!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持29不支持0