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

grep 正则表达式

发布时间:2020-12-13 23:07:40 所属栏目:百科 来源:网络整理
导读:grep (Global Regular Expression Print)是一种文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来,egrep (Extended grep)扩展正则表达式, 语法 grep [options] PATTERN [FILE…] PATTERN(模式): 文本字符和正则表达式的起名字符组合而成匹

grep (Global Regular Expression Print)是一种文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来,egrep (Extended grep)扩展正则表达式,

语法

grep [options] PATTERN [FILE…]

PATTERN(模式): 文本字符和正则表达式的起名字符组合而成匹配条件

options(参数)

-i --ignore-case 忽略字母大小写

--color 高亮显示匹配的字符

-v 显示没有被模式匹配到的行

-o 只显示被模式匹配到的字符串

-A # 显示搜索到的行及后面#行的内容

-B # ………………………..前面#行的内容

-C # ………………………….前后各#行的内容

正则表达式:REGular EXPression,REGEXP 正则表达式是一种表示方式,让你可以查找匹配特定准则的文本。

grep 引号的意义

‘ ’: 强引用,所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换。grep ‘$a’file 表示的时查找 ‘$a’字符

“ ”: 把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容。grep “$a”file 表示引用变量a,查找变量a的值

不加引号 : 不会将含有空格的字符串视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用

正则表达式由两个基本组成部队建立:一般字符和特殊字符,一般字符指没有特殊意义的字符,特殊字符常称为元字符。

元字符:

: 转义符,如果元字符前面加有‘’ 就表示为其本身的意义,不再有元字符的特殊意义

. : 匹配任意单个字符

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

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

字符集合

[:digit:] 表示数字集合0-9 [[:digit:]]与[0-9]的意义相同

[:lower:] 小写字母集合

[:upper:] 大写字母集合

[:punct:] 标点符号字符

[:space:] 空白格符[:blank:]空格(space)与定位(tab)字符

[:alpha:] 字母字符包括大小写

[:alnum:] 字母数字字符(包括大小写)

匹配次数字符

* : 匹配前面字符任意次,包括0

.* : 表示任意长度任意字符

? : 匹配前面的字符一次或零次

{m,n} : 匹配其前面字符至少m次,至多n次,如果最多次数不限,n可以省略不写,如果表示至少为0次,m可以写为0,但不能不写。{1,} {0,3}

注意: ‘’ 在正则表达式中也代表有转义的意思,与bash本身的意义区别。如?在bash中表示任意一个字符,这里?表示的是次数,{} 在bash中表示命令展开,在正则表示式中{m,n}表示次数,但在扩展正则表达式中可以不用’‘来区分。

位置锚定:

^ : 锚定行首, 此字符后面的任意内容必须出现在行首

$ : … 行尾, ……………………………………………… 行尾

^$ : 空白行

&; 或 b : 锚定词首,其后面的任意字符必须做为单词的首部出现

&; 或 b : …….词尾, ………………………………………………..尾部出现

&;word&; : 匹配整个单词 &; &;

分组:

() : (alnum)* 表示把 (alnum) 做为一个整体,匹配任意次

后向引用

1 : 引用第一个左括号以及与之对应的右括号所包括的所有内容

2 : 第二个

n : 第n 个

即把前面分组的内容后面再引用

grep 命令就是使用字符或正则表达式规则来匹配文本的命令

egrep 扩展正则表达式,也grep ?e 命令效果是一样的

.

[]

[^] 与正则表达式的用法一样

次数匹配

* : 和正则表达式作用一样

? : 不用加 ’’

+ : 匹配其前面的字符至少一次,类似正则表达式 {1,}

{m,n} : 不使用斜线

位置锚定符与正则表达式一样

分组:

( ) : 与正则表达式( ) 相比,不需要斜线

1 2 3 后向引用

或者符

| :or 或意义 C|cat 表达的是C 或者 cat,(C|c)at 表示 Cat|cat 的意义

(编辑:李大同)

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

    推荐文章
      热点阅读