Linux查看日志(cat、sed等,Ubuntu16.04)

昨天实习面试被问到Linux下如何查看最后100行日志内容,没答上来,回来找下资料好好学习一下

一、wc命令

        介绍查看日志命令前,先看到如何统计日志文件中行数命令wc。

        主要用法是:wc [选项] filename

        例如:wc -l debug.log               --统计debug.log文件的行数

                    wc -m debug.log            --统计debug.log文件的字符数

其他具体的可以输入man wc查看

Linux查看日志(cat、sed等,Ubuntu16.04)_第1张图片

输入wc -l debug.log    得到

二、sed命令

        sed是非交互式的编辑器,是面向字符流的编译器,首先吧当前处理的行存储到临时缓冲区中,成为“模式空间”(pattern space),然后处理缓冲区的内容,处理完后,把内容发送到屏幕。下面是Linux自带(官方?)的解释。

        这是一个功能很强大的命令,用来只显示日志有点大材小用(我自己的感觉)。

命令格式:sed [选项] {处理方式} filename(s)      ---------(s)代表可以处理多个文件

例如:sed -n '5,10p' debug.log                       ---------用5,10p处理文件debug.log,p表示显示出来(5,10是第5行到第10行)            

            sed -n '5,10d' debug.log                        ---------删除第5行到第10行,d表示删除

①[选项]中的命令:

Linux查看日志(cat、sed等,Ubuntu16.04)_第2张图片

-n    :只打印处理方式匹配的行

-e    :直接在命令行模式上进行sed动作编辑,此为默认选项

-f    :将sed的动作写到一个文件中,用文件名代替{处理方式},来处理文件

-r    :支持扩展表达式

-i    :直接修改文件内容

②{处理方式}中的命令:

Linux查看日志(cat、sed等,Ubuntu16.04)_第3张图片

 

 d  删除行

 h  把模式空间里的内容复制到暂存缓冲区

 H  把模式空间里的内容追加到暂存缓冲区

 g  把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容

 G  把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面

 l   列出非打印字符

 p  打印行

 n  读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理

最重要的是{处理方式}可以用正则表达式。

sed是个功能很强大的命令,还有许多功能要我去摸索。

三、cat与tail、head命令组合实现

        cat命令是连接文件并打印到输出设备(屏幕、文件等)上,cat经常用来显示文件内容。

        cat详细解释在上一篇博客上。

①tail命令:显示文件尾部的内容。

        命令格式:tail [选项] [参数]  filename

        例如:tail filename                --------默认显示文件最后10行

                    tail  -n  +1000 filename            -------显示filename文件从第1000行到最后

                    tail  -n  1000 filename            ---------显示filename文件最后1000行

                    tail  -c  1000 filename            ---------显示filename文件最后1000个字节内容

Linux查看日志(cat、sed等,Ubuntu16.04)_第4张图片

②head命令:显示文件开头的内容。

        命令格式:head [选项] [参数]  filename

 

        例如:head  filename                --------默认显示文件开始10行

                    head -n  1000 filename            ---------显示filename文件开始1000行

                    head -c  1000 filename            ---------显示filename文件开始1000个字节内容

Linux查看日志(cat、sed等,Ubuntu16.04)_第5张图片

 

③组合起来

        cat filename | tail -n +10000 | head -n 100           -----------从10000行开始,显示100行

        cat filename | head -n 10000 | tail -n +10100      -----------显示从10000到10100行

可以配合less或者more使用,对日志进行分页显示

例如:cat debug.log | tail -n +10000 | head -n 2000 | less

配合按键:f键或者空格下一页,b键上一页,回车下一行(用more类似,但是我的more命令b键上一页不好使,网上都说可以,难度是我版本问题吗 Ubuntu16.04)

以上就是我自己学习的,有错误的请轻喷!!

你可能感兴趣的:(Linux)