awk之exit
浏览:3415次 出处信息
题目
有100个日志文件,每个文件大约1G,每条日志都以 “H:i:s” 的时间格式开头,如:
05:02:04 xxx yyy zzz
因为是日志文件,所以肯定以时间为顺序的,现在可以确定的是,在某个文件中存在一条 01:02:03 这个时间点的关于xxx的日志,要找出来 ,如何做?
办法1:
# for f in *; do awk '/^01:02:03/{}' $f |grep xxx; done虽然我们的正则是只匹配行首,算是很快的了,但是,我们还是扫描了整个的100个文件;考虑到每个文件肯定都是有时间顺序的,我们做了大量的无用的工作,其实完全可以提前退出的,加入每10分钟都会有日志出现,则可以优化如下:
办法2:
# for f in *; do awk '/^01:02:03/{} /^01:1/{exit}' $f |grep xxx; done这样的话,没个文件只扫描很少的一部分就可以了
办法3:
该题的sed解法:
# for f in *; do sed -n '/^01:02:03/p; /^01:1/q}' $f |grep xxx; done
办法4:
当然,将 xxx 并入正在表达式也是可以的(只是没有上面看起来更一目了然):
# for f in *; do sed -n '/^01:02:03.xxx/p; /^01:1/q}' $f ; done
建议继续学习:
- Linux命令行里的“瑞士军刀” (阅读:11057)
- AWK 简明教程 (阅读:8791)
- awk命令,实现文件的合并与拆分 (阅读:6823)
- AWK介绍 (阅读:6196)
- 更快的IP库查找方法以及AWK中的二分查找 (阅读:5996)
- awk 实例之二维数组 (阅读:5563)
- 操作大文本,awk vs vim (阅读:4510)
- SED命令行脚本快速参考,AWK命令行脚本快速参考,perl命令行脚本快速参考 (阅读:4418)
- 从shell中向awk传递变量实例 (阅读:4177)
- bash shell - sed及awk文本捕获及替换 (阅读:3968)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Linux开关机命令详解
后一篇:Linux cron运行原理 >>
文章信息
- 作者:phpor 来源: PHPor 的Blog
- 标签: awk exit
- 发布时间:2015-04-08 14:22:16
建议继续学习
近3天十大热文
-
[939] WordPress插件开发 -- 在插件使用 -
[117] 解决 nginx 反向代理网页首尾出现神秘字 -
[50] 如何保证一个程序在单台服务器上只有唯一实例( -
[48] 整理了一份招PHP高级工程师的面试题 -
[48] 用 Jquery 模拟 select -
[48] 海量小文件存储 -
[47] ps 命令常见用法 -
[47] Innodb分表太多或者表分区太多,会导致内 -
[46] 全站换域名时利用nginx和javascri -
[45] find命令的一点注意事项
