grep和正则表达式

grepglobal research expression print

是一种强大的文本搜索工具。根据关键字匹配行,然后打印含有关键字的行的内容。

基本格式:grep   “关键字”

          grep   “关键字”   目录   在该目录下找含有关键字的文件。

例:

 

几个常见参数:

    -c 计算找到关键字的次数。

-i 忽略大小写。

-v 把没有匹配到的行显示出来。

-o 只显示被匹配到的字符串

-A  num     只显示匹配到的那一行的后几行。

-B  num    只显示匹配到的那一行的前几行。

正则表达式:

.  任意单个字符

例:

a.b    表示以a开头,中间为一个任意字符,以b结尾的三个字符。

*  前面一个字符在此重复零次或更多次。

例:

a*b   表示a出现任意次,b出现一次的行。(可出现的情况ab、b(a在此出现0次)、aab)

aa*b  第一个a表示以a开头,第二个a表示a出现任意次,最终以b结尾的字符(可出现的情况有ab、aab、aaab,不可能出现b)

[范围]  这个字符在方括号的范围内。

[^范围] 该字符不在这个范围的任意字符。

.*任意长度的字符

a.*b  表示以a开头,以b结尾,a与b中间有任意长度的任意字符组成的字符串。

? 匹配前面的字符出现一次或0次,用的时候要有转义字符 (?)

 

add表示a出现一次,第二个d结尾,第二个d表示a出现0次,d结尾。

d:表示a出现0次,d结尾。

{m,n}:前面一个字符最少出现m次,最多出现n次。使用时要添加转义字符(  {m,n}  )

 

a{3,9}d:表示a要出现3~9次,d结尾的字符串。

aaaaaaad:表示a出现7次(在3次和9次之间),d结尾的字符串。

^ 行首 “^root”:匹配以root开头的行。

$ 行尾 “root$”:匹配以root结尾的行。

^任意字符$  只表示一行中只有该字符串(开头没有空格,结尾也没有空格)的行。

例:

^root$  只表示这一行从开头只有一个root的字符,结尾没空格。

^$ 空行(和^ $是有区别的,空格也是特殊的字符。)

<任意字符:词首。以该词开头

任意字符>:词尾。以该词结尾。

注:正则表达式具有贪婪模式,它会尽可能长的匹配文本,典型情况如下:

 

原文地址:https://www.cnblogs.com/wanglog/p/5510130.html