grep的使用方法

时间:2022-02-21 23:36:47

grep 命令

grep globalsearch regular expression(RE) and print out theline,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。


基本的正则表达式

符号

意义

例子

*

0个或者多个在*字符之前的那个普通字符

hel*o>hello,helllllo,helo

.

匹配任意字符

.73

^

匹配行首,或者后面字符的非

^cloud>cloud开始的行

$

匹配行尾 ^$表示空行

micky$>micky结尾的行

[]

匹配字符集合

[a-z]>所有小写,[A-Z]>所有的大写字母,[0123456789]=[0-9],-表示从左边到右边

\

转义符,屏蔽一个元字符的特殊意义


\<\>

精确匹配符号

\<the\>精确匹配the这个单词

\{n\}

匹配前面字符出现n

JO\{3\}重复字符O3

\{n,\}

匹配前面字符至少出现n

JO\{3,\}重复字符O至少3

\{n,m\}

匹配前面字符出现n-m

JO\{3,6\}重复字符O3-6


拓展的正则表达式

符号

意义

例子

匹配0个或者1个在其之前的普通的字符

JOB>JOB,JOOB

+

匹配1个或者多个在其之前的普通的字符

S+EU>SSEU,SEEEU,SSSSSEU

()

表示一个字符集合或用在expr

re(a|e|o)d表示从a,e,o中选择一个

|

表示“或”,匹配一组可选的字符

|可以作为或使用,但是一般备用于管道符用法

bash shell本身不支持正则表达式,使用正则表达式的是shell命令和工具,如grep,sed,awk

但是bashshell 可以使用正则表达式中的一些字符实现通配功能,常用的通配符号有?,*{},[]

grep 的格式一般为:

grep [选项】【模式】 【文件……】

grep的命令可以是字符串,可以是变量还可以是正则表达式,只要模式中包含空格则需要使用“”


grep 命令选项与意义

选项

意义

例子

-c

只输出匹配行的数量

grep -c Certificate *.pem

-i

搜索时忽略大小写

grep -i certificate *.pem

-h

查询多个文件是不显示文件名


-l

只列出符哈匹配的文件名,而不列出具体的匹配行


-n

列出所有的匹配行,并显示行号


-s

不显示不存在或者无匹配文本的错误信息


-v

显示不包含匹配文本的所有行


-w

匹配整词


-x

匹配整行


-r

递归搜索,不仅搜索当前的工作目录,而且搜索子目录


-q

禁止输出任何结果,以退出状态表示搜索是否成功


-b

打印匹配行距文件头部的偏移量,以字节为单位


-0

-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位


-E

支持拓展的正则表达式


-F

不支持正则表达式,按照字符串的字面意思进行匹配