grep:根据模式,搜索文本,并将符合模式的文本行显示出来

pattern: 文本字符和正则表达式的元字符组合成的匹配条件


grep [option] [pattern] file

-i 忽略大小写

--color  

-v 显示没有被模式匹配到的行

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

-E 使用扩展正则表达式

-A#

-B#

-C#

正则表达式:  

元字符:

. 匹配任意单个字符

[]匹配指定范围内的任意单个字符

[^]匹配指定范围外的任意单个字符

 

匹配次数(贪婪模式)  

* 匹配其前面的字符任意次

.* 任意长度的任意字符

\? 匹配其前面的字符1次或0次 有或无

\{m,n\} 匹配其前面的字符至少m次,至多n次

 \{1,\}至少一次

 \{0,3\}最多3次

  [root@localhost log]# grep 'a\{1,3\}b' bb

  ab

  aab

  [root@localhost log]# grep 'a.\{1,3\}b' bb

  aab

  acb

  adb

  amnb

  amnbamnbamnbamnb

位置锚定  

^ 锚定行首,此字符后面任意内容必须出现在行首

 [root@localhost log]# grep '^r..t' /etc/passwd

 root:x:0:0:root:/root:/bin/bash


$ 锚定行尾,此字符后面任意内容必须出现在行尾

 

 [root@localhost log]# grep 'b..h$' /etc/passwd

 root:x:0:0:root:/root:/bin/bash

 learn:x:1000:1000:Learn:/home/learn:/bin/bash

^$ 空白行

\< 其后面的任意字符必须作为单词首部出现

\> 其前面的任意字符必须作为单词尾部出现

\<root\> 

 [root@localhost log]# grep 'root\>' test2

 This is root

 The user is mroot

 chroot is command

 [root@localhost log]# grep '\<root' test2

 This is root

 rooter is a dog's name

 [root@localhost log]# grep '\<root\>' test2

 This is root

分组

\(\)

 \(ab\)*    *描述ab视为一个整体

 \1