Linux文本处理命令总结
一、概述
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本来就可以看做一门编程语言了,使用也是极其的灵活,等到之后学习的更深入
的时候再来补充吧