grep、egrep、fgrep正则表达式

前端之家收集整理的这篇文章主要介绍了grep、egrep、fgrep正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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@H_721_403@ 

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

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

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

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

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

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

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

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

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

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

找出/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@H_721_403@

猜你在找的正则表达式相关文章