+ -
当前位置:首页 → 问答吧 → 如何从文件里取第1次出现# Time: 110704 9后面紧跟的30行

如何从文件里取第1次出现# Time: 110704 9后面紧跟的30行

时间:2011-07-20

来源:互联网

linux从mysql的慢查询文件slow-queries.log (几个g)
sed -n '/# Time: 110704  9:/,$p' /var/log/slow-queries.log>a.log
取某个时间点 # Time: 110704  9后的所有行如上,

现在要求仅仅第1次出现# Time: 110704  9后面紧跟的30行。  只需要这么多,
有没有方法用1个shell 命令完成 (每次总是需要做2次 用临时文件a.log 之后再head -30)?

作者: liyihongcug   发布时间: 2011-07-20

本帖最后由 ly5066113 于 2011-07-20 19:32 编辑

回复 liyihongcug
  1. grep -A 30 '# Time: 110704  9:' /var/log/slow-queries.log > a.log
复制代码
  1. sed -n '/# Time: 110704  9:/,+30p' /var/log/slow-queries.log > a.log
复制代码
这2种写法简单,但效率不高。
  1. awk '/# Time: 110704  9:/,0{print;if(i==30)exit;i++}' /var/log/slow-queries.log > a.log
复制代码
这种效率高一些。

作者: ly5066113   发布时间: 2011-07-20

thanks a lot

作者: liyihongcug   发布时间: 2011-07-20

热门下载

更多