专栏首页地方网络工作室的专栏Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容。

但是用这个脚本的同事很郁闷,因为执行时间比较长,越大的文件越长。于是找我,问我能不能实现一个更快的方案。

我想了一下,觉得之前的设计是脱裤子放屁,明明有更加简单的实现方法。

想办法获得我要截取的内容的开始的行号,然后再想办法获得我想截取的文件的结尾的行号,然后用两个行号来进行截断文件并输出。就可以实现这个效果了。

不过想法归想法,实现我还得实验一下,很快解决了问题,如下:

实现代码

#!/bin/bash

# 设定变量
log=3.log
s='2017-08-01T01:3'
e='2017-08-01T01:4'

# 根据条件获得开始和结束的行号
sl=`cat -n $log | grep $s | head -1 | sed 's/^[ \t]*//g' | cut -f1`
el=`cat -n $log | grep $e | tail -1 | sed 's/^[ \t]*//g' | cut -f1`

# 获取结果并输出到 res.log 文件
sed -n  "$sl","$el"'p' $log >> res.log

运行了一下,速度飞起啊!

以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 搜索引擎优化(SEO) 基础常识

    在移动互联网迅猛发展的今天,各种APP、小程序满天飞,针对网页的搜索引擎优化(SEO)对于现今的企业来说已经不是头等重要的事情了。但是如果公司的SEO做得好的话...

    FungLeo
  • React + webpack 开发单页面应用简明中文文档教程(一)一些基础概念

    版权声明:本文为 FengCms FungLeo 原创文章,允许转载,但转载必须注明出处并附带首发链接 ...

    FungLeo
  • python+shell 备份 csdn 博客文章

    前面,我们将所有的博客文章全部备份下来了。但是,博客当中的那些图片,还是散落在各处。有的在第三方的网站上,有的在 CSDN 的服务器上,有的直接引用的其他地方的...

    FungLeo
  • win10 uwp MetroLog 入门

    在实际的项目,需要做很多记录,记录日志可以作为调试。在 UWP 如果自己写日志,放在文件,那么需要很多重复代码。 在 UWP 写文件是很慢,而且需要异步,所以很...

    林德熙
  • Docker安装mysql8主从结构 顶

    因为我用的镜像是docker.io/cytopia/mysql-8.0,所以我们需要先把该镜像给pull下来。

    算法之名
  • linux ssh安全设置

    修改ssh端口号: Port 8622 指定要绑定的网络接口,默认是监听所有接口,建议绑定到内网通讯的网卡地址 ListenAddress 192.168.1...

    joshua317
  • Linux实现SSH远程登录

    远程登录方式有telnet和ssh两种方式,由于telnet使用的是明文传输,传输过程中系统帐号密码等重要信息容易被截获,安全性比不上SSH(secure sh...

    飞奔去旅行
  • Mybatis分页插件PageHelper的使用详解

    如果你也在用Mybatis,建议尝试该分页插件,个人感觉这个是最方便,超好用的分页插件。 该插件目前支持Oracle,Mysql,MariaDB,SQLite...

    麦克劳林
  • [UWP 自定义控件]了解模板化控件(7):支持Command

    以我的经验来说,要让TemplatedControl支持Command的需求不会很多,大部分情况用附加属性解决这个需求会更便利些,譬如UWPCommunityT...

    dino.c
  • 开启mysql慢查询

    程序员同行者

扫码关注云+社区

领取腾讯云代金券