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

grep , egrep 以及正则表达式

发布时间:2020-12-14 01:31:13 所属栏目:百科 来源:网络整理
导读:一、什么是正则表示法? 正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能; 正则表达式分为 两类:基本正则表达式和扩展正则表达式; ------------------------------------------------------ 注:本文以gr

一、什么是正则表示法?

正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能;

正则表达式分为两类:基本正则表达式和扩展正则表达式;

------------------------------------------------------ 注:本文以grep为例来讲解正则表达式。

(1)基本正则表达式:

字符匹配:

字符: 字符说明:
. 匹配任意单个字符
[] 匹配任意单个字符
[[:digit:]],[0-9] 所有数字
[[:lower:]],[a-z] 所有小写字母
[[:upper:]],[A-Z] 所有大写字母
[[:alpha:]],[a-zA-Z] 所有字母
[[:alnum:]],[0-9a-zA-Z] 所有字母和数字
[[:space:]] 所有的空白字符
[[:punct:]] 所有标点符号
[^] 匹配指定集合外的任意单个字符

















匹配次数:用于对其前面紧邻的字符所能够出现的次数作出限定


字符: 字符说明:
* 匹配其前面的字符任意次,0,1或多次
? 匹配其前面的字符0次或1次
+ 匹配其前面的字符出现至少1次
{m} 匹配其前面的字符m次
{m,n} 匹配其前面的字符至少m次,至多n次
.* 匹配任意长度的任意字符

位置锚定


字符: 字符说明:
^ 行首锚定写在模式的最左侧
$ 行尾锚定写在模式的最右侧
^$ 空白行
&; 词首锚定,出现在要查找的单词模式的左侧;&;char
&; 词尾锚定,出现在要查找的单词模式的右侧;char&;
&;pattern&; 匹配单词


分组:() 后向引用:

模式中,如果使用()实现了分组,在某行文本的检查中,如果()的模式匹配到了某内容,此内容后面的模式中可以被引用;1,2,3模式自左而右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容。


文本搜索工具:根据用户指定的“模式(pattern)”对目标文本进行过滤,显示被模式匹配到的行。例如: grep,egrep,fgrep


grep:grep [OPTION]... 'PATTERN' FILE...

--color

注:?color选项是个非常好的选项,可以让你清楚的明白匹配了那些字符。最好在自己的.bashrc或者.bash_profile文件中加入:

例如:alias grep=grep --color=auto ;(每次grep搜索之后,自动高亮匹配效果了。

参数说明


OPTION: 选项说明:
-v 反向选取
-o 仅显示匹配到内容
-i 忽略字符大小写
-E 使用扩展正则表达式
-A # After的意思,显示匹配字符串后#行的数据
-B # before的意思,显示匹配字符串前#行的数据
-C # 显示匹配#次数
--color 以特定颜色高亮显示匹配关键字


egrep及扩展的正则表达式

grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。

# grep -E 'pattern' file...

# egrep 'pattern' file...

虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。

扩展正则表达式的元字符:

字符匹配:用法与grep用法一致;

锚定:用法与grep用法一致

匹配次数限定:


字符: 字符说明:
* 匹配其前面的字符任意次,0,1或多次
? 匹配其前面字符0次或1次
+ 匹配其前面的字符至少1次
{m} 匹配其前面的字符m次
{m,n} 匹配其前面的字符m次
| 或者的方式匹配字符

---------------------------------------------注:与grep用法不同的是不加。

分组:()支持后向引用:1,...

或者: a|b: a或者b


fgrep

fgrep [option] 'string' file...

(编辑:李大同)

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

    推荐文章
      热点阅读