Linux过滤满足条件的文件,linux 下用egrep多条件过滤效率

dump_test_file.sql 文件大小4.2GB1.过滤单个条件:$ time cat -n dump_test_file.sql |egrep "CREATE DATABASE \/\*\!32312 IF NOT EXISTS\*\/"2326  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db1` /*!40100 DEFAULT CHARACTER SET utf8 */;10594  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db2` /*!40100 DEFAULT CHARACTER SET latin1 */;14254  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db3` /*!40100 DEFAULT CHARACTER SET utf8 */;real    0m11.936suser    0m7.358ssys     0m12.659s2.过滤单个条件$ time cat -n dump_test_file.sql |egrep "Dump completed on"14628  -- Dump completed on 2012-05-19  4:01:32real    0m12.569suser    0m8.986ssys     0m11.718s3.合并过滤上面2个条件:$ time cat -n dump_test_file.sql |egrep "CREATE DATABASE \/\*\!32312 IF NOT EXISTS\*\/|Dump completed on"2326  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db1` /*!40100 DEFAULT CHARACTER SET utf8 */;10594  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db2` /*!40100 DEFAULT CHARACTER SET latin1 */;14254  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db3` /*!40100 DEFAULT CHARACTER SET utf8 */;14628  -- Dump completed on 2012-05-19  4:01:32real    3m8.444suser    3m3.850ssys     0m13.049s为什么第三次执行的时间,比前面2次时间相加还久???还好egrep 过滤3个或更多条件时,过滤的时间跟2个条件差不多 。。。上面执行过滤的时候用了cat -n 是因为需要知道过滤出来的结果的所在行号;若直接用egrep的话,执行速度会快5%左右;还测试一下,过滤一个230GB的文件,单个条件的过滤需要19分钟,当时的IO 读 220rMB/s,egrep 单线程cpu使用率大约20%;而过滤2个(或2个以上)条件的话,则大概需要3小时,当时IO 读 23rMB/s,egrep 单线程cpu使用率大约90%;***********************************************

有个网友建议加-P参数在这个例子中,如果将改成 :time grep -n -P  "CREATE DATABASE \/\*\!32312 IF NOT EXISTS\*\/|Dump completed on" dump_test_file.sql***过滤结果省略****real    0m11.117suser    0m10.009ssys     0m1.106sgrep过滤多条件的速度会快很多,在这里-P参数挺有用的-P, --perl-regexpInterpret PATTERN as a Perl regular expression.

对于大文件来说-F会更加快,消耗的cpu更加少,单线程cpu 40% 左右;上面的其他grep操作时,cpu在80%-95%之间如:time grep -n -F -e 'CREATE DATABASE /*!32312 IF NOT EXISTS*/' -e 'Dump completed on' dump_test_file.sql***过滤结果省略****real    0m4.453suser    0m3.290ssys     0m1.163s

之前用grep时,基本上都是小文件,结果很快就出来了;最近用grep从几GB,甚至几百GB的文件中,过滤多条件的时候,效率问题就出来了;还好grep有相关的参数,加上-P,特别是加上-F参数时,会比不加参数快很多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值