加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

grep、egrep及相应的正则表达式和用法

发布时间:2020-12-13 22:10:26 所属栏目:百科 来源:网络整理
导读:一、grep及基本正则表达式 1、grep基本用法 grep[OPTIONS]PATTERN[FILE...] 常用选项: --color=auto:对匹配到的文本着色后高亮显示; -i:忽略字符大小写; -o:仅显示匹配到的文本自身; -v,--invert-match:反向匹配; -E:支持扩展的正则表达式; -q,-
一、grep及基本正则表达式
1、grep基本用法
grep[OPTIONS]PATTERN[FILE...]
常用选项:
--color=auto:对匹配到的文本着色后高亮显示;
-i:忽略字符大小写;
-o:仅显示匹配到的文本自身;
-v,--invert-match:反向匹配;
-E:支持扩展的正则表达式;
-q,--quiet,静默模式,不输出任何信息;

1)首先建立一个test.txt的文本文件

wKiom1bla5Gi3JwoAAAa34Xe2H8125.png

2)然后使用grep和各选项进行匹配搜索:
--color=auto:对匹配到的文本着色后高亮显示

wKioL1blZMCTw293AAAcBOrfCvI635.png

-i:忽略字符大小写

wKiom1blZ2vB9vQnAAAcjnI8iho315.png

-o:仅显示匹配到的文本自身,而不会显示行

wKioL1blaMSiIccVAAAVAr6eY3E127.png

-v,反向匹配

wKiom1blaK3AXcQ4AAAgZIV3BVc775.png

-q,静默模式,不输出任何信息;

wKiom1blacGSLVWZAAAXK8WzxdE834.png


2、基本正则表达式

正则表达式就是一类字符所书写出的模式(pattern),来处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊称号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。

元字符:不表示字符本身的意义,用于额外功能性的描述。

1)字符匹配:

.:匹配任意单个字符

wKiom1bldGLyxfR_AAAhS_k9YLM161.png


注意:空格也属于字符,这里的“old”前边有空格所以也匹配到了。

[ ]:匹配范围内的任意单个字符;

wKioL1bljcSCEQPBAAAhFk47yVc573.png

[^ ]:匹配范围外的任意单个字符;

wKioL1bljhiQD2H-AAAlttxNA8A974.png

[:digit:]:数字字符"0-9"

[:lower:]:小写字母字符"a-z"

[:upper:]:大写字母字符"A-Z"

[:alpha:]:字母字符"A-Za-z"

[:alnum:]:字母字符"A-Za-z"和数字字符"0-9"

[:space:]:代表的是空白字符,包括空格键[Tab]等

wKiom1blkQ3zonVAAAAhc5FPMdg688.png


2)次数匹配

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

wKioL1bleVjQoTCDAAAgUkUOprw937.png

.*:匹配任意长度的任意字符,0次或多次

wKioL1bld6-QcNOCAAAi810mNyU045.png

?:匹配其前面的字符可有可无(即0次或1次)

wKioL1blexWg4NZQAAAbhGdJF4I124.png

{m}:匹配m次 这里的代表转义字符,扩展正则表达式中不用

wKioL1blfozSsGKqAAAMmfw9k4E757.png

{m,n}:匹配最少m次,最多n次

{0,n}:匹配至多n次

wKiom1blflfQC1i0AAAqUpexh_g249.png

3)位置锚定: 用于指定字符出现的位置

^:托字符,锚定行首,

注意与匹配范围外的任意单个字符的[^ ]进行区分尤其是语句中含有像[:digit:]这类集 合时需特别注意。

$:锚定行尾

wKioL1blgmKThiH_AAAznUTY3L8516.png

^$:既是行首,又是行尾,即空白行

wKiom1blgxOyt1aVAAAnhobLaV0343.png

注意:这里为了显示效果,使用管道和wc命令直接输出了空白行的行数。

&;:锚定词首 &;char bchar 这里的依然是转义

wKiom1blhUrRCzQLAAARen5Svtw252.png

&;:锚定词尾 char&; charb

wKiom1blhVqB4XGgAAAMwDf9JsY855.png

&;char&;:既锚定词首又锚定词尾,即锚定某个单词。

wKiom1blhWrzxU-PAAAcFBnqbbg764.png

4)分组和引用

() 给括号转义

将括号中模式匹配到的字符会被记录于正则表达式引擎内部的变量中,然后通过1或2等来前向 引用,引用前面的第1个或第2个左括号以及与之对应的右括号中的模式所匹配到的内容。

wKiom1bli_PSXvOdAAAqhqmLkEs347.png


二、egrep及扩展正则表达式

1、egrep基本用法
egrep[OPTIONS]PATTERN[FILE...]
常用选项:
--color=auto:对匹配到的文本着色后高亮显示;
-i:忽略字符大小写;
-o:仅显示匹配到的文本自身;
-v,--invert-match:反向匹配;
-q,--quiet,静默模式,不输出任何信息;

2、扩展正则表达式

字符匹配的命令和用法与基本正则表达式的用法相同,这里不再重复阐述,但要注意以下两 点:

a:在扩展正则表达式中不需要转义符,但锚定词首词尾还需要有

b: 扩展正则表达式中增加或者|

元字符:

1)字符匹配:

.:任意单个字符

[]:指定范围内的任意单个字符

[^]:指定范围外的任意单个字符

2)次数匹配:

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

?:匹配其前面的字符0次或1次

+:匹配其前面的字符1次或多次

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

{m,n}:至少m次,至多n次

{0,n}:至多n次

3)锚定:

^:锚定行首

$:锚定行尾

&;:锚定词首 b

&;:锚定词尾 b

4)分组及前向引用:

5)或者 基本正则表达式中没有|

实例还以上面的test.txt文件为例,找出以S或s开头的单词:

wKioL1bll6vjFeYhAAAS-BBVwho642.png

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读