千家信息网

grep与正则达式

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,grep是一个行编辑器,它的默认动作是搜索与给定模式匹配的行显示到屏幕上来。它的变种程序包括egrep和fgrep。正则表达式是用户定义的、Linux工具用来过滤文本的模式模板。正则表达式利用元字符来
千家信息网最后更新 2026年11月01日grep与正则达式

grep是一个行编辑器,它的默认动作是搜索与给定模式匹配的行显示到屏幕上来。它的变种程序包括egrep和fgrep。

正则表达式是用户定义的、Linux工具用来过滤文本的模式模板。正则表达式利用元字符来表示数据流中的一个或多个字符。

正则表达式(Regual Expression,REGEXP)包括BRE和ERE两种,BRE就是基本正则表达式,而ERE是扩展正则表达式。

grep使用的元字符是BRE,egrep使用的元字符是ERE,而fgrep不使用元字符。而这三个命令可以使用不同的选项进行互通。接下来,我们来看看grep的用法。


一、grep

1. 格式

grep [options] PATTERN [FILE...]

2. 选项

-o:只显示匹配的行中与PATTERN相匹配的部分。

-i: 忽略PATTERN和输入文件中大小写的区别

-v:反选,只显示没有被PATTERN匹配到的行

-q:静默模式,找到匹配的内容,则命令的执行状态返回值为0,否则为非0。

-A NUM:打印紧随匹配的行之后的下文NUM行。

-B NUM: 打印紧随匹配的行之前的上文NUM行。

-C NUM: 打印匹配出来的行的上下文各NUM行。


二、基本正则表达式

类型

元字符

解释

字符匹配

.

匹配任意单个字符


[]

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


[^]

匹配指定范围外的单个字符




匹配次数

*

匹配其前的字符任意次,0次,1次或者多次


.*

匹配任意长度的任意字符


\?

匹配其前的字符0次或者1次,即其前面的字符可有可元


\+

匹配其前的字符1次或者多次,即其前面的字符至少出现1次


\{m\}

匹配其前的字符m次,精确匹配


\{m,n\}

匹配其前的字符至少m次,至多n次


\{0,n\}

匹配其前的字符最多n次


\{m,\}

匹配其前的字符最少m次

位置锚定

^

锚定行首,写在模式的最左侧,指定的字符串只能出现在行首


$

锚定行尾,写在模式的最右侧


^PATTERN$

用PATTERN来匹配整行


^$

表示空行,连空格都不能包含,不包括任意字符


^[[:spaces:]]*

表示空行或者包括空白字符的行


\

锚定词首


\bPATTERN

锚定词首


PATTERN\>

锚定词尾


\\

精确锚定单词




分组及引用

\(PATTERN\)

将一个或者多个字符捆绑在一起,当作一个整体进行处理;

分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:

\1: 模式从左侧起,第一个左括号以及与之匹配到的右括号之间的字符

\2:模式从左侧起,第二个左括号以及与之匹配到的右括号之间的字符


三、扩展正则表达式


类型

元字符

解释

字符匹配

.

匹配任意单个字符


[]

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


[^]

匹配指定范围外的单个字符




匹配次数

*

匹配其前的字符任意次,0次,1次或者多次


.*

匹配任意长度的任意字符


?

匹配其前的字符0次或者1次,即其前面的字符可有可元


+

匹配其前的字符1次或者多次,即其前面的字符至少出现1次


{m}

匹配其前的字符m次,精确匹配


{m,n}

匹配其前的字符至少m次,至多n次


{0,n}

匹配其前的字符最多n次


{m,}

匹配其前的字符最少m次

位置锚定

^

锚定行首,写在模式的最左侧,指定的字符串只能出现在行首


$

锚定行尾,写在模式的最右侧


^PATTERN$

用PATTERN来匹配整行


^$

表示空行,连空格都不能包含,不包括任意字符


^[[:spaces:]]*

表示空行或者包括空白字符的行


\

锚定词首


\bPATTERN

锚定词首


PATTERN\>

锚定词尾


\\

精确锚定单词

 或

  |

或,以|为分隔,表示或者为|左边,或者为|右边

C|cat表示C或者cat

分组及引用

(PATTERN)

将一个或者多个字符捆绑在一起,当作一个整体进行处理;

分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:

\1: 模式从左侧起,第一个左括号以及与之匹配到的右括号之间的字符

\2:模式从左侧起,第二个左括号以及与之匹配到的右括号之间的字符


四、 BRE和ERE的区别: 从上面的两个表可以看出基本正则表达式和扩展正则表达式的区别,那就是扩展正则表达式在进行次数匹配和分组时的元字符不再需要\进行转义;另外扩展正则表达式多了一个或的元字符。



五、 练习:前面提到了这么多,一起来练习下吧。

1、显示/proc/meminfo文件中以大写或小写S开头的行;

# grep -i '^s' /proc/meminfo

# grep '^[Ss]' /proc/meminfo

# grep -E '^(S|s)' /proc/meminfo


2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

# grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f


3、显示/etc/passwd文件中其默认shell为/bin/bash的用户; 进一步:仅显示上述结果中其ID号最大的用户;

# grep "/bin/bash$" /etc/passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1,7


4、找出/etc/passwd文件中的一位数或两位数;

# grep "\<[0-9][0-9]\?\>" /etc/passwd

# grep "\<[0-9]\{1,2\}\>" /etc/passwd


5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf


6、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

# grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit


7、找出netstat -tan命令执行结果中以'LISTEN'结尾的行;

# netstat -tan | grep "LISTEN[[:space:]]*$"


8、添加用户bash, testbash, basher, nologin(SHELL为/sbin/nologin),而找出当前系统上其用户名和默认shell相同的用户;

# grep "^\([[:alnum:]]\{1,\}\):.*\1$" /etc/passwd


9、扩展题:新建一个文本文件,假设有如下内容:

He like his lover.

He love his lover.

He like his liker.

He love his liker.

找出其中最后一个单词是由此前某单词加r构成的行。

[root@liuqing tmp]# grep "\(l..e\).*\1" love.txt

10. 显示ifconfig命令输出结果中的IP地址。

~]# ifconfig | grep -E -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>(.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>){3}"



六、三个命令的互换

grep -E表示使用扩展正则表达式(egrep), -F表示将模式视为一个固定的字符串(fgrep)

egrep -G表示使用基本正则表达式(grep), -F表示将模式视为一个固定的字符串(fgrep)

fgrep -E表示使用扩展正则表达式(egrep), -G表示使用基本正则表达式(grep)

字符 正则 表达式 模式 括号 元字符 文件 用户 单个 命令 空白 分组 精确 之间 内容 单词 变量 字符串 空行 范围 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网项目 深圳互联网络科技有限公司 互联网科技小贷 电子科技大学互联网 互联网科技ppt模板 大白互联网科技 互联网科技有限公司 翻译 中国互联网金融科技基金 卓越科技互联网 招聘 字节跳动和互联网科技 受益于互联网科技的高速发展 亳州好赞互联网科技有限公司 世界互联网领先科技成果获奖 高科技互联网套路 互联网科技股为什么大涨 郑州欣桑互联网科技有限公司 济南小医互联网科技有限公司招聘 西安有哪些互联网高科技企业 互联网科技手机排行榜 杭州科技互联网公司有哪些 广州紫鲸互联网科技有限公司 互联网科技有限公司图片 融贸通互联网科技 盛创互联网科技有限公司 中正互联网科技招聘 互联网科技公司有风险吗 华夏恒生科技与互联网科技 上海互联网科技公司ppt 艺电能源互联网科技有限公司招聘 互联网时代高科技布局
0