一、概述

Linux中的有关文本处理和分析的命令有很多,本节主要介绍几个使用比较频繁的命令:

grep、sed、find、awk。其中每个命令的使用方式都是比较灵活的,命令的参数很多,选

项也很多,但我们只需记住些常用的即可

二、grep

1、用途简介

grep用于查找文件中符合条件的字符串,比较多地用于日志行为分析

2、命令格式

grep match_pattern file

3、常用参数

  • -o:只输出匹配的文本行

  • -v:只输出没有匹配的文本行

  • -c:统计文件中包含文本的行数

  • -n:打印匹配的行号

  • -i:搜索时忽略大小写

  • -l:只打印文件名

  • -e:指定字符串作为查找文件内容的样式

  • -r:递归的搜索

4、使用示例

(1)匹配多个字符串模式

grep -e "mode1" -e "mode2" filename

(2)在多级目录中对文本递归搜索

grep "mode" . -r -n

(3)在当前目录下查找以file为后缀的文件名并且包含test字符串的文件

grep test file

(4)在日志文件夹中查找包含docker字符串的日志

grep -n docker /var/log/log

三、sed

1、用途简介

sed命令主要是利用脚本来处理文本文件,主要用来自动编辑一个或多个文件、简化

对文件的反复操作、编写转换程序

sed命令在处理文本时把当前行存储在临时缓冲区,称为模式空间,然后使用sed命令

处理缓冲区中的内容;处理之后把缓冲区中的内容送往屏幕显示,再去处理下一行,不断

重复,直到文件末。如果不使用写入的命令,文件内容是不会被改变的

一般在使用命令时都会对行进行定址,如果不指定地址,sed默认会处理文件的所有行

2、命令格式

sed [-hnV] [ - e 命令 ] [-f] [文本文件]

3、常用参数

  • -e<命令>:以选项中指定的script来处理输入的文件

  • -f<命令>:以选项中指定的script文件来处理输入的文本文件

  • -n:取消默认的完整输出,只要需要的行

4、动作说明

  • a: a的后面可以接字符串,而这些字符串会在目前的下一行出现

  • c: 后面可以接字符串,这些字符串可以取代n1,n2之间的行

  • d: d后通常不用接字符串

  • i: i的后面可以接字符串,而且这些字符串会在新的一行出现

  • p: print行信息

5、使用示例

(1)sed命令经常用于行新增、删除、替换和显示
  • 打印出日志文件的第三行 : sed -n '3p' boot.log

  • 打印出日志文件的第3行到第9行 : sed -n '3,9p' boot.log

  • 打印出日志文件的最后一行 : sed -n '$p' boot.log

  • 打印1-5行并且显示行号 : sed -n -e '1,5p' -e '=' boot.log

  • 将文件的2-5行内容置换成test : nl test.file | sed '2,5c test'

  • 删除2-5行的文件内容 : nl test.file | sed '2,5d'

  • 在第2行后增加一行数据 : nl test.file | sed '2a, this is a new line'

(2)sed命令用于数据的搜寻并处理
  • 搜索文件中包含root关键字的行 : nl boot.log | sed -n '/root/p'

  • 数据的搜寻并删除 nl boot.log | sed -n '/root/d'

  • 数据的搜寻并替换 sed 's/要被取代的字符串/新的字符串/g'

四、find

1、用途简介

find命令用来在指定的目录下查找文件、任何位于参数之前的字符串都将被视为待

查找的目录名;如果不使用任何参数,则将查找到的子目录和文件进行全部显示将在

当前目录下查找子目录和文件,并将查询结果全部显示

2、命令格式

find path -option [ -print] [-exec -ok command] {} \;

find命令判断 “-”之前的部分为path,之后的是expression option; 如果Path是空字符

串则使用当前路径

3、常用参数

  • -mount:只检查和在同一个文件系统下的部分

  • -amin n : 在过去n分钟被读取过

  • -atime n:在过去n天被读取过的文件

  • -ctime n : 在过去n分钟被修改过的文件

  • -cmin:在过去n分钟内被修改过

  • -name:文件名称符合name的文件

  • -pid n : process id是n的文件

  • -ipath p:路径符合p的文件,ipath一般会忽略路径的大小写

  • -empty:空的文件

4、使用示例

(1) find . -name "*.log"

将当前目录及其子目录下所有延伸名是c的文件列出来

(2) find . -name "test.file"

直接查找当前目录下的几个文件

(3) find ~ -empty

查找home目录下的所有空文件

(4) find -name "test.file" -exec md5sum {} \;

对查找到的文件执行命令,当然也可以执行其他命令

(5) find / -type f -size 0 -exec ls -l {} \;

查找系统中所有文件长度为0的普通文件,并列出它们的完整路径

五、awk

1、用途简介

awk是一个很强大的文本分析工具,简单来说就是awk就是把文件逐行的进行读入,

以空格为默认的文件分隔符,切开的部分再做各种文件分析和处理

2、使用语法

awk [-F field-separator] 'commands' input-files

其中,commands是真正的awk命令,-F域分隔符是可选的,input-files是待处理的文

件在awk中,文件中的每一行,由域分隔符分开的每一项称为一个域,在不指定-F域分隔符

的情况下,默认是空格

awk本来就可以看做一门编程语言了,使用也是极其的灵活,等到之后学习的更深入

的时候再来补充吧