免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2363 | 回复: 6
打印 上一主题 下一主题

[系统管理] egrep 多条件过滤的效率问题,有没好的代替方法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-24 14:22 |只看该作者 |倒序浏览
本帖最后由 wjlcn 于 2012-05-24 15:49 编辑

1.过滤单个条件:
$ 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.936s
user    0m7.358s
sys     0m12.659s

2.过滤单个条件
$ time cat -n dump_test_file.sql |egrep "Dump completed on"
14628  -- Dump completed on 2012-05-19  4:01:32

real    0m12.569s
user    0m8.986s
sys     0m11.718s

3.合并过滤上面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:32

real    3m8.444s
user    3m3.850s
sys     0m13.049s

为什么第三次执行的时间,比前面2次时间相加还久???

有没好的替代方法?

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
2 [报告]
发表于 2012-05-24 14:29 |只看该作者
time  命令怎么使用。

论坛徽章:
0
3 [报告]
发表于 2012-05-24 14:41 |只看该作者
回复 2# ulovko


    time 后接命令

论坛徽章:
0
4 [报告]
发表于 2012-05-24 14:43 |只看该作者
我在虚拟机上试了下没有得出楼主的这个结论啊

论坛徽章:
0
5 [报告]
发表于 2012-05-24 14:50 |只看该作者
我这样试的,靠谱吗
  1. [root@co601 ~]# grep -R 'ifcfg' /etc/*|wc -l
  2. 266
  3. [root@co601 ~]# grep -R 'host' /etc/*|wc -l
  4. 1363
  5. [root@co601 ~]# grep -RE 'ifcfg|host' /etc/*|wc -l
  6. 1628

  7. [root@co601 ~]# time grep -R 'ifcfg' /etc/* &> /dev/null

  8. real        0m17.248s
  9. user        0m0.914s
  10. sys        0m15.769s
  11. [root@co601 ~]# time grep -R 'host' /etc/* &> /dev/null

  12. real        0m3.559s
  13. user        0m0.097s
  14. sys        0m3.379s
  15. [root@co601 ~]# time grep -RE 'ifcfg|host' /etc/* &> /dev/null

  16. real        0m6.094s
  17. user        0m0.415s
  18. sys        0m5.514s
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-05-24 15:02 |只看该作者
回复 5# anonymous0502


我的过滤文件的大小是几GB的,对于小文件,这边执行也很快


   

论坛徽章:
0
7 [报告]
发表于 2012-05-24 15:18 |只看该作者
sed或awk不知道会不会快一些,对这两个用得不太熟,你去shell版问问看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP