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