1.什么是grep正则表达式?

grep:就是用来对文本内容进行过滤的命令

正则表达式:就是一套处理大量的字符串而定义的规则和方法。

通过正则表达式这些特殊字符号,可以快速的过滤、替换需要的内容。

正则表达式分为两种:基本正则表达式扩展正则表达式

shell 将grep结果存入数组 shell中grep命令脚本实例_字符串

2.grep命令

参数

作用

-v

排除匹配的内容

-i

忽视大小写

-o

只显示匹配的内容

-n

显示行号

--color=auto

显示匹配颜色

-E

支持扩展的正则表达式

shell 将grep结果存入数组 shell中grep命令脚本实例_markdown_02


以下用实例来演示各参数的作用:

原文件内容如下

shell 将grep结果存入数组 shell中grep命令脚本实例_markdown_03

命令

说明

grep root passwd

过滤passwd文件中含有root的信息

shell 将grep结果存入数组 shell中grep命令脚本实例_markdown_04

命令

说明

grep -E "root|ROOT" passwd

(不区分大小写)过滤含有root的信息

grep -Ei "root" passwd

(不区分大小写)过滤含有root的信息

grep -Ei "^root" passwd

(不区分大小写)过滤以root开头的信息

grep -Ei "root$" passwd

(不区分大小写)过滤以root结尾的信息

grep -Ei "^root|root$" passwd

(不区分大小写)过滤以root开头或结尾的信息

grep -Ei "^root|root$" passwd -v

(不区分大小写)过滤root不在开头或结尾的信息(不一定含有root)

grep -Ei "^root|root$" passwd -v | grep root

(不区分大小写)过滤root在中间的信息

shell 将grep结果存入数组 shell中grep命令脚本实例_shell 将grep结果存入数组_05


shell 将grep结果存入数组 shell中grep命令脚本实例_字符串_06


shell 将grep结果存入数组 shell中grep命令脚本实例_不区分大小写_07

命令

说明

grep ROOT passwd -n

显示含有ROOT的行的行号

grep ROOT passwd -n1

显示含有ROOT的行和其上下各一行以及它们行号

grep ROOT passwd -1

显示含有ROOT的行和其上下各一行

grep ROOT passwd -A1

显示含有ROOT的行和其下一行

grep ROOT passwd -B1

显示含有ROOT的行和其上一行

shell 将grep结果存入数组 shell中grep命令脚本实例_不区分大小写_08

3.正则表达式(Basic regular expression)

shell 将grep结果存入数组 shell中grep命令脚本实例_shell 将grep结果存入数组_09

字符

说明

^

例如 ^word—以word开头的内容

$

例如 word$—以word结尾的内容

^$

空行

^.*

任意多个字符开头

.

表示且只能代表任意一个字符(当前目录,加载文件)

\

转移字符,让有特殊身份的字符保持原意不变

\<

以该字符串开头(防止贪婪模式)

\>

以该字符串结尾(防止贪婪模式)

注意:grep 要对{}转义 ,egrep (或grep -E )不需要转义
grep命令不能识别一些特殊符号(如|,?,(),*,+等 ),而egrepgrep -E可识别扩展符号
-E有些时候用grep会搜索不出来,但要搜索的内容里面实际上是存在的,此时我们就要加上扩展正则

4.扩展正则表达式

shell 将grep结果存入数组 shell中grep命令脚本实例_markdown_10

5.grep中字符的匹配位置设定和匹配次数设定

(1)grep中字符的匹配位置设定

参数

说明

^关键字

以该字符开头

关键字$

以该字符结尾

\<关键字

以该字符串开头

关键字\>

以该字符串结尾

\<关键字\>

匹配该字符串

shell 将grep结果存入数组 shell中grep命令脚本实例_不区分大小写_11

(2)grep中字符的匹配次数设定

参数

说明

*

字符出现[0-任意次]

.*

关键字之间匹配任意字符

?

字符出现[0-1次]

+

字符出现[1-任意次]

{n\}

字符出现[n次]

{m,n\}

字符出现[最少m次,最多n次]

{0,n\}

字符出现[0-n次]

{m,\}

字符出现[至少m次]

(xy\)\{n\}xy

关键字出现[n次]

[a-z]

匹配字符集合内任意一个字符[a-z]

[^abc]

^在中括号内表示非,即不包含a或者b或者c

shell 将grep结果存入数组 shell中grep命令脚本实例_字符串_12


shell 将grep结果存入数组 shell中grep命令脚本实例_正则表达式_13


shell 将grep结果存入数组 shell中grep命令脚本实例_markdown_14


shell 将grep结果存入数组 shell中grep命令脚本实例_字符串_15


shell 将grep结果存入数组 shell中grep命令脚本实例_markdown_16