介绍

文本分析三剑客grep sed awk在实际工作环境中用的很多,今天分享一下,过滤器 grep egrep

用法

使用一般有如下两种形式

第一种形式
grep [option] [pattern] [file1,file2]

如查找show.txt里面包含content的行

grep

第二种形式
command | grep [option] [pattern]

如查看某个服务信息

ps -ef | grep

如查找show.txt里面包含content的行

cat show.txt | grep

必须掌握的选项

选项

含义

-v

显示不匹配行信息(反向搜索)

-i

搜索时忽略大小写

-n

显示行号(文件中的行号)

-r

递归搜索(搜索文件夹)

-E

支持扩展正则表达式

-F

不按正则表达式匹配,按照字符串字面意思匹配

show.txt文件中的内容如下

a
b
c
d
py*
i love python

-v 选项

grep

-n选项

grep

-r选项
查找/etc/myconfig及其子目录下,打印出包含content字符串所在行的内容

grep

-F选项

grep

py被当成正则表达式处理,我就想搜索py这个内容,就可以用到-F选项

grep

了解的选项

选项

含义

-c

只输出匹配行的数量,不显示具体内容

-w

匹配整词

-x

匹配整行

-l

只列出匹配的文件名,不显示具体匹配行内容

-a

将二进制文件转为文本

show.txt的文件内容如下

love 
lovelove
i love
i love a

-w选项(lovelove这个词没有显示出来,因为love前后得有空格或者tab才会认为是一个单词)

grep

-x 选项(匹配行,行的内容只能是i love a)

grep -x "i love a"

这些选项可以混着用,例如
查找/etc/myconfig及其子目录下,打印出包含content字符串所在文件的文件名

grep

-r:递归搜索(搜索文件夹)
-l:只列出匹配的文件名,不显示具体匹配行内容、

当然用find也是可以的,只不过麻烦一点

find /etc/myconfig -type f | xargs grep -l 'abc'

查看日志常用的选项

选项

含义

-C n

显示匹配行及其前后5行

-B n

显示匹配行及其前5行

-A n

显示匹配行及其后5行

show.txt内容如下

1
2
3
4
5
6
7

查找4及其上下2行

cat show.txt | grep

查找4及其前2行

grep

grep和egrep的区别和联系

grep默认不支持扩展正则表达式,只支持基础正则表达式
使用grep -E 可以支持扩展正则表达式
使用egrep可以支持扩展正则表达式,与grep -E等价