Linux日志截取利器——sed命令(亲测可用)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux日志截取利器——sed命令(亲测可用)相关的知识,希望对你有一定的参考价值。

参考技术A

在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。
但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。
具体命令如下:

这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。
但是这条命令的使用有两个前提(很多网上的博主都没有提到)
第一,日志输出的日期格式是要满足命令中的格式 ,如果不是的话就跟着实际的格式改
第二,输入的日期必须要真实存在!!! ,比如说9点整刚好没有日志输出,那么这条命令就会失效

更加通配的命令可以是这样, 使用 号*

这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了
使用 > ,将截取到的内容输出到指定的文件中,方便进一步查看

ps:在实际操作中,我们一般会在后面加grep命令做进一步的关键字过滤

linux 三大利器 grep sed awk sed

 

 sed主要内容和原理介绍

sed 流处理编辑器

 

 

  • sed一次处理一行内容,读入一行处理一行
  • sed不改变文件内容(除非重定向)

 

sed 

  • 命令行格式

    $ sed [options] \'command\' file(s) (option:参数 ,command 操作命令 ,file操作文件命令)

    option : -e , -n

    command : 行定位(正则)+sed命令(操作)

  • 脚本格式

    $ sed -f scriptfile file(s)

 

sed 操作命令

  • 基本操作命令

    p(打印相关的行)

       1.1 sed \'p\' passwd #会打印出两行,因为sed的原理是读入一行,输出一行,此处再加上p命令打印出来的一行,所以最后会打印出两行

                 1.2 sed -n \'p\'passwd #加了-n选项之后,只会打印出相关的行,那些不相关的行则不会打印出来 二、行定位

       行定位 :

                       定位一行: x;  /pattern/  加入x定位到第x行,也可加入正则定位目标行

       定位多行 :x,y ; /pattern/,y  定位到x到y行,或者定位到有正则pattern的行到y行

            /pattern1/,/pattern2/; 定位到有正则pattern1的行到有正则pattern2的行

            x,y! 定位到除x到y行的其他行

       定位间隔行:first~step 定位到first行,在每隔step行输出一行

 

      sed -n \'/ff/!p\' file

      sed -n \'/news/,/mooc/p\'  file---从news行开始到mooc行截至范围

      sed -n \'10,20!p\'  file---10-20行不打印

      sed -n \'10~3p\' file---10行开始,跳跃3行输出

 

     a(新增行)/i(插入行)

     c(替代行)

        d(删除行)

                       sed \'5a======\' file#在第5行的下面新增一行,并写入======这些内容   

       sed \'1,5i======\' file 表示在1-5行前面插入一行,并写入======这些内容   

       sed \'1,5c======\' file 将1-5行改变成一行====

           sed \'1,5d\' file 删除1-5行

 

以上是关于Linux日志截取利器——sed命令(亲测可用)的主要内容,如果未能解决你的问题,请参考以下文章

linux根据日期截取日志步骤

如何快速截取某段时间内的日志

Linux系列之使用sed命令来排查日志

Linux系列之使用sed命令来排查日志

Linux系列之使用sed命令来排查日志

linux:文本处理系列-1.行截取