Linux中查看文本的小技巧(超实用!)

前言

日常开发中,我们经常需要在服务器上进行各种文本,日志的查看操作,本文主要对常用的文本,日志查看技巧进行了一番总结和归纳,方便大家收藏起来后续查看使用:

tail命令查看日志信息

实时监控日志:

tail -f filename

实时监控10行日志信息:

tail -10f filename

查看日志尾部的最后100行日志信息:

tail -n 100 filename

查看日志100行之后的日志信息:

tail -n +100 filename

head命令查看文本信息

查看文本开始的头100行信息:

head -n 100 filename

查看文本最后100行信息以上的内容

head -n -100 filename

cat命令查看文本信息

查看全部文本内容

cat filename

查看文本的中间某些行范围之间的内容,例如说查看文本文件100-120行之间的内容:

cat -n filename |tail -n +100|head -n 20

不过使用个人不是太喜欢使用这种命令来进行文本的定位查看,因为查看起来过于麻烦,文章下边会有更加简便的命令操作。

tac查看文本信息

和cat命令有点相反,cat命令更多的是从头部往尾部的顺序展现文本内容,而tac命令正好是从文本的尾部往头部展现日志内容

tac filename

例如说,我们通过cat命令和tac命令同时来查看一段相同的内容:

通过不同命令来展示文本,会发现文本的内容顺序有所相反。

搜索文本内容

grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep命令的常用方式:

在多个文件中查找:

grep "match_pattern" file_1 file_2 file_3 ...

标记匹配颜色 --color=auto 选项:

grep "match_pattern" file_name --color=auto 

//【这里的color项可以根据文档说明进行选择always,never,auto三种】

输出除之外的所有行 -v 选项:

grep -v "match_pattern" file_name

使用正则表达式 -E 选项:

grep -E "[1-9]+"

只输出匹配到的内容选项:

grep -o -E "[a-z]+." line

统计文件或者文本中包含匹配字符串的行数 -c 选项:

grep -c "text" file_name

输出包含匹配字符串的行数 -n 选项:

grep "text" -n file_name

在了解了grep命令能完成的功能点之后,我们可以在实际工作中灵活运用。

有些时候我们也会遇到一些希望查看某个时间段日志信息的需要,这个时候可以利用grep这条命令来实现这个功能,例如说希望查看2019-08-06 22点这一个小时以内的日志信息,那么可以输入以下命令:

 grep '2019-08-06 22' filename

这样可以快速定位到你所希望查看的信息范围。

由于grep命令是可以接收standard input的数据,因此我们通常可以借助管道命令符“ | ”的帮助,在一些标准输出进行中进行查找操作。

例如说,先将文件的内容读取出来,然后借助管道的帮助将内容转发给grep来进行内容过滤,如下边的这段命令:

cat log.file |grep -n '2019-08-06 22:43'

除了使用grep命令之外,也可以使用sed命令来实现相应的效果。

sed是一种非交互式的编辑器,sed会逐行处理文件(或输入),并将结果发送到屏幕。

可能对于新手来说,讲概念还不如直接来几个实操案例更为直接。

sed命令的常用方式:

只打印文件的第一行内容

sed -n '1p' filename

查看文件的第一行到第十行之间的内容

sed -n '1,10p' filename

删除第一行文本信息

sed '1d' filename

将文本里面的某些字符串进行替换

sed 's/希望替换的内容/被替换的内容/g'
例如:sed 's/1/one /g' filename 将1替换为one

在了解了sed命令的一些基础用法之后,我们可以在实际的工作场景中多次运用,从而强化自己对于sed命令的理解。

例如说,通过sed命令来进行日期范围的指定,例如说查看2019-08-06 22:43-22:44之间的日志记录:

sed -n '/2019-08-06 22:43/,/2019-08-06 22:44/p' filename

上边有说到使用head和tail命令一起来实现对于日志文件的某段内容查看,但是这样的操作实在是有点麻烦,不妨可以尝试使用sed命令来进行操作。

例如说,查看日志的第1-20行内容:

 nl log.file | sed -n '1,10p'

利用more命令进行翻页查看

如果说希望查看的日志文件过大,那么可以通过使用more命令来进行分页查找,例如说设定每一页展示10条数据信息:

more -10 filename

通过使用more命令可以查看到每一页展示的数据,同时通过敲空格键会进行下一页的跳转。同时在窗口中也会显示当前所阅读的文本内容的基础进度。

说了那么多,我们不妨进行一些模拟的操作场景吧:

查看日志最后一次出现关键字'test'的日志记录

 grep 'test' -A 10 log.file | tail -n 11

这里需要了解到grep命令的几个参数含义:

  • grep ‘name' -A 10 显示匹配内容和后面的10行
  • grep ‘name' -B 10 显示匹配内容和前面的10行
  • grep ‘name' -C 10 显示匹配内容和前后面的10行

tail -n 11命令则是将当前显示的10行内容以及匹配的那一行内容展示出现

简单统计一份日志里面出现‘test'关键字的行数

相应命令:

grep 'test' ./log.file |wc -l

这里我们可以先将文本的内容进行输出到标准输出中,然后借助管道将数据信息传给wc命令进行统计。

wc命令常用的几个参数

-l 匹配的行数
-w 匹配的字数
-m 匹配的字符数目

linux里面对于文本信息的查看技巧实在是有太多了,远远不局限于我在文中所提及的这些,因此在实际的工作中我们还可以多多将有助于自己提升工作效率的技巧进行归纳和总结。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • 一天一个shell命令 linux文本操作系列-head,tail命令详解

    head命令中文介绍: 用法:head [选项]... [文件]... 将每个指定文件的头10 行显示到标准输出. 如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头. 如果不指定文件,或者文件为"-",则从标准输入读取数据. 长选项必须使用的参数对于短选项时也是必需使用的. -c, --bytes=[-]K 显示每个文件的前K 字节内容: 如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容 -n, --lines=[-]K 显示每个文

  • 一天一个shell命令 linux文本内容操作系列-cut命令详解

    说明: cut 按列切分文件,你可以指定分隔每列的定界符.在cut的术语中,每列都是一个字段,就是有时候说第一列,可能表述称第一个字段. 实战: 假设有文件data.txt,格式如下 NO    Name    Mark    Percent  1    Sarath    45    90  2    Alex    49    98  3    Anu    45    90 分隔符(定界符)为Tab 制表符 如果我要取得第二列,所有人的名称,有什么好的办法吗?此时cut该大显身手了. 1.

  • 一天一个shell命令 linux文本操作系列-diff命令详解

    这又是一个文件比较命令,熟练掌握会节省你很多工作.还记得comm命令吗?diff比他更加复杂,好用,不仅能比较文件,还能比较目录. 当一个文件有多个版本时候,或者更多复杂的文件,目录比较时,你会期望有一个比comm更有用的命令,diff正是为此而生. 全称:different file 实例: 文件1: v1.txt 复制代码 代码如下: hello   world v1_echo   v1_diff   v1_comm  shell is easy! 文件2: v2.txt 复制代码 代码如下

  • 使用Linux正则表达式灵活搜索文件中的文本

    正则表达式是一种符号表示法,用于识别文本模式.Linux处理正则表达式的主要程序是grep.grep搜索与正则表达式匹配的行,并将结果输送至标准输出. 1. grep匹配模式 grep按下述方式接受选项和参数(其中,regex表示正则表达式) 复制代码 代码如下: grep [options] regex [files] 其中options主要为下表: 选项 含义 功能描述 -i ignore case 忽略大小写 -v invert match 不匹配匹配的 -l file-with-matc

  • 一天一个shell命令 linux文本内容操作系列-awk命令详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

  • Linux使用文本编辑器vi常用命令

    vi/vim是什么? Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便.vi就是一种功能强大的文本编辑器,而vim则是高级版的vi,不但可以用不同颜色显示文字内容,还能进行诸如shell脚本.C语言程序编辑等功能,可以作为程序编辑器. vi的三种模式及各个模式之间的转换关系 一:翻页 ctrl+u向上翻半页 ctrl+f向上翻一页 ctrl+d   向下翻半页 ctrl+b

  • 一天一个shell命令 linux文本操作系列-touch命令用法

    之前我们学过dd创建测试文件,如果不需要考虑文件大小,创建一个空白文件的话,不妨试试 touch: 将每个文件的访问时间和修改时间改为当前时间. 不存在的文件将会被创建为空文件,除非使用-c 或-h 选项. 入门例子: 1. 如果想生成100个空文件 for name in {1..100}.txt do touch $name done 2. 改进一下 touch test{1..20}.c 查看 --help 用法:touch [选项]... 文件... 将每个文件的访问时间和修改时间改为当

  • 一天一个shell命令 linux文本操作系列-wc命令详解

    全称 wc是一个用于统计的工具,全拼为:Word Count(单词统计) 实例: 1. 统计行数 $wc –l file 2. 统计单词数 $wc –w file 3. 统计字符数 $wc –c file 4. 统计流中的字符数 $echo –n 1234 | wc –c 输出:4 解读--help 用法:wc [选项]... [文件]... 或:wc [选项]... --files0-from=F 打印每行的换行符,单词,字节的数量,如果多于一个文件,则打印每个总行数.如果没有文件,或者文件位

  • 详解Linux文本文件与WIN文本文件换行格式转换命令

    详解Linux文本文件与WIN文本文件换行格式转换命令 前言: 有 时在WIN下编辑好的脚本文件上传到LINUX服务器中不能正常执行,开始误认为是LINUX配置问题,后来发现,是WIN与LINUX存储文件时的换行 符标志不同造成的.在DOS使用的换行符为 ^M$,我们称为CR与LF两个符号.而在Linux中,则仅有LF ($) 这个换行符. 可以用如下命令完成格式转换:$dos2unix,$unix2dos.但这两个命令在UBUNTU发行版本中不存在,可通过: $sudo apt-get ins

  • 一天一个shell命令 linux文本内容操作系列-grep命令详解

    从这篇开始,是文本内容操作,区别于文本操作. Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. shell,perl,python,一直都是文本操作的专家语言,而我们今后学习的的将是shell的噱头--文本操作.下面提到最常见的一个: grep 这算是文本内容的一个重量级选手,能根据某些规格在上千行的文本文件中查找

随机推荐