技术头条(投递你的文章)     搜索本站     邮件订阅     微信号:IT技术博客大学习
您现在的位置首页 --> Linux --> awk之exit

awk之exit

浏览:1518次  出处信息

题目

   有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
觉得文章有用?立即: 和朋友一起 共学习 共进步!

建议继续学习:

  1. Linux命令行里的“瑞士军刀”    (阅读:8453)
  2. AWK 简明教程    (阅读:6959)
  3. awk命令,实现文件的合并与拆分    (阅读:5792)
  4. 更快的IP库查找方法以及AWK中的二分查找    (阅读:4418)
  5. awk 实例之二维数组    (阅读:3887)
  6. 操作大文本,awk vs vim    (阅读:3223)
  7. SED命令行脚本快速参考,AWK命令行脚本快速参考,perl命令行脚本快速参考    (阅读:3142)
  8. 从shell中向awk传递变量实例    (阅读:3014)
  9. bash shell - sed及awk文本捕获及替换    (阅读:2734)
  10. bash shell - sed, awk文本捕获及替换    (阅读:2673)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2017 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号