正则表达式:模式匹配语言,有其自身语法和规则,其中最重要的是元字符,通常用单引号括起

使用greb匹配文本(greb基本用法是提供一个正则表达式和一个文件,但该文件中应该有此正则表达式的匹配项)

grep : (global research print), 根据某个模式,搜索文本,并将符合模式的文本行显示出来。

模式 (pattern): 由文本字符和正则表达式的元字符组合而成的匹配条件。

 Greb选项

-i  使用提供的正则表达式,但不会强制区分大小写

-v  1.仅显示不包含正则表达式匹配项的行(注:默认情况下显示匹配到的行)2.匹配所有以#或;开头的行(注:#和;表示行将被解释为注释的典型字符)

-r  将递归的匹配正则表达式的数据搜索应用到一组文件或目录中   

-e  若使用多个-e选项,则可以提供多个正则表达式,并将于逻辑or一起使用

-A<number>    显示正则表达式匹配项之后的行数

-B<number>    显示正则表达式匹配项之前的行数

-o  表示只显示被模式匹配到的字符串,默认情况下显示匹配到的整行内容

--color  将匹配到的字符串以高亮颜色显示出来

 正则表达式的基本语法

^  锚定行首,此字符串后边的任意内容必须出现在行首 例: grep "^l" file3

$  锚定行尾,此字符前面的任意内容必须出现在行尾 例:[user@system1 Desktop]$ grep "e$" file3

^$  表示匹配空白行例:[user@system1 Desktop]$ grep "^$" file3 

\<  锚定词首,其后面的任意字符必须作为单词的首部出现 ,例:[user@system1 Desktop]$ grep "\<lo" file3 

lover

look

lookuop

\>  锚定词尾,其前面的任意字符必须作为单词的尾部出现 ,例:[user@system1 Desktop]$ grep "ily\>" file3 

my family is farm

we are family

\<\>  精确匹配 例:[user@system1 Desktop]$ grep "\<family\>" file3 

my family is farm

we are family

*  匹配其前面的字符任意次 例:[user@system1 Desktop]$ grep "o*" file3(匹配出现o任意次的字符) [user@system1 Desktop]$ grep "o*t" file3(匹配前面的o可以出现任意次,但必须以t结尾) [user@system1 Desktop]$ grep "oo*" file3(表示第一个o必须匹配,*紧连的o可出现任意次)

.*  表示任意长度的任意字符 例:[user@system1 Desktop]$ grep ".oo*" file3

\?  匹配其前面的字符一次或者零次 (a?b), 有时候 ? 要使用 \ 转义才可以使用。例:[user@system1 Desktop]$ grep "lo\?" file3(表示l必须匹配,o可出现一次或零次)

\{m,n\} \ 用来转义,防止 {} 被 bash 来解析;匹配其前面的字符至少 m 次,最多 n 次 ;(\{1,\}: 表示最少 1 次,无上限 ) 。 \{0,3\} 表示最多 3 次 例:[user@system1 Desktop]$ grep "loo\{1,2\}" file3(表示lo必须匹配,紧跟的o至少1次,最多两次)

.  匹配任意单个字符  例:[user@system1 Desktop]$ grep ".k" file3(后面的k必须匹配,前面任意匹配一个字符)

look

lookuop

took

lo ok root rool

[]  匹配指定范围内的任意单个字符 ,例:[user@system1 Desktop]$ grep "[famhs]" file3(表示只要有括号里的任何一个,则都可以匹配)

cat

my family is farm

we are family

me

[^]  匹配指定范围外的任意单个字符 ,例:[user@system1 Desktop]$ grep "[^foamhs]" file3(表示只要不是括号里的单个字符就能匹配)

\(\)  将内容分组 , 也可以做后向引用 ,\1 表示调用前面第一个 () 中匹配到的内容,依次类推 ;

如: \(ab\)*  表示任意数量 ab 字符串 , 把 ab  当做一个整体, ab 可以出现 0 次或多次 ,* 修饰的是 ab 这个整体 

例:

He love his lover

She like her liker

He love his liker

She like her lover

1.[user@system1 Desktop]$ grep "\(l..e\)" txt(表示匹配以l开头以e结尾,中间可匹配两个字符的任意字符)

he love his lover

she like her liker

he love his liker

she like her lover

2.[user@system1 Desktop]$ grep "\(l..e\)." txt(表示匹配以l开头以e结尾,中间可匹配两个字符且后匹配任意一个单个字符)

he love his lover

she like her liker

he love his liker

she like her lover

3.[user@system1 Desktop]$ grep "\(l..e\).*" txt

he love his lover

she like her liker

he love his liker

she like her lover

4.[user@system1 Desktop]$ grep "\(l..e\).*\1" txt(表示匹配前面第一个括号里匹配到的内容)

he love his lover

she like her liker



转载于:https://blog.51cto.com/xunmengyuan/1717623