grep:模式(Pattern)搜索文本,并将符合模式的文本行显示出来。


egrep( grep -E ):可以使用扩展正则表达式,并将符合模式的文本行显示出来


fgrep:执行速度最快,但是不支持正则表达式


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


 基本格式:grep [options] PATTERN [FILE...]

 [options]常用参数


 -i      不区分大小写


 --color 匹配到的用颜色标记出来


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


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


 -E      使用扩展的正则表达式,等同于"egrep"命令

 -B[N]   匹配到的前N行

 -A[N]   匹配到的后N行

正则表达式:REGular EXPression, REGEXP(分为基本正则表达式和扩展正则表达式)

 元字符(基本正则表达式):grep支持的元字符

. 匹配任意单个字符


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


 .* 匹配任意长度的任意字符


 \? 匹配紧挨其前面的字符0次或则1次,需要转义字符“\”


 [] 匹配制定范围内的任意单个字符(字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:])


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


 \{m,n\} 匹配其前面的字符至少m次,至多n次(n可省略\{m,\})


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


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


 ^$ 匹配空白行


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


 \>或\b 锚定词尾,其后面的任意字符必须作为单词尾部出现


 \<...\>或\b...\b 同时锚定词首词尾


 \(\) 分组,可做后向引用(如\1: 引用第一个左括号以及与之对应的右括号所包括

 的所有内容)


 元字符(扩展正则表达式):egrep、grep -E支持的元字符

 和基本表达式重叠之处不在列出


 ? 匹配紧挨其前面的字符0次或则1次,不需要转义字符


 {m,n} 匹配其前面的字符至少m次,至多n次 不需要转义字符


{m} 精确匹配其前面的字符m次


 () 用于分组,同样不需要转义字符


 + 匹配其前面的字符至少1次


 | 或则,匹配其前面或者后面的字符


简单示例:

显示/proc/meminfo文件中以不区分大小的s开头的行:

[root@localhost ~]# grep -i "^s" /proc/meminfo
或者[root@localhost ~]# grep "^[sS]" /proc/meminfo

显示/etc/passwd中以nologin结尾的行:

[root@localhost ~]# grep "nologin$" /etc/passwd

显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行:

[root@localhost ~]# grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
或则[root@localhost ~]# egrep "^#[[:space:]]+[^[:space:]]" /etc/inittab

显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行:

[root@localhost ~]# grep ":[0-9]:" /etc/inittab

显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行

[root@localhost ~]# grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
或则[root@localhost ~]# egrep '^[[:space:]]+' /boot/grub/grub.conf

显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行:

[root@localhost ~]# grep "^\([0-9]\).*\1$" /etc/inittab 
或则[root@localhost ~]# egrep "^([0-9]).*\1$" /etc/inittab

找出/boot/grub/grub.conf文件中1-255之间的数字:

[root@localhost ~]# egrep --color "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" /boot/grub/grub.conf