linux模式表达式,linux基础--grep以及模式正则表达式

grep [options] PATTERN [FILE....]

-i:不区分大小写

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

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

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

-E:使用扩展正则表达式

*:任意长度的任意字符

?:匹配任意单个字符

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

[^]:匹配指定范围外的字符

-A n:显示匹配到行下面n行

-B n:显示匹配到行上面n行

-C n:显示匹配到行前后n行

正则表达式:REGEXP

Basic REGEXP:基本正则表达式

Extended REGEXP:扩展正则表达式

基本正则表达式

grep默认使用基本正则表达式,使用-E参数表示使用扩展名正则表达式

元字符

.:匹配任意单个字符

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

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

[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]

[[:space:]]:空白字符

[[:punct:]]:标点符号

[[:lower:]]:小写字母

[[:upper:]]:大写字母

[[:alpha:]]:大小写字母

[[:digit:]]:数字

[[:alnum:]]:数字和大小写字母

次数匹配

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

a,b,ab,aab,acb,acdb

a*b则只可以匹配b,ab,aab

.*:任意长度的任意字符

?:匹配其前面的字符一次或0次,一般需要使用\?转义

a,b,ab,aab,acb,acdb

a\?b则只可以匹配b,ab,aab,acb,acdb

注:grep是在行中查找,因此只要按照模式匹配到部分字符就可以匹配

\{m,n\}:匹配其前面字符,至少m次,至多n次。

\{1,\}:至少一次

\{0,5\}:至少0次至多5次[root@liang-study basic]# grep '[[:space:]]\{1,3\}[0-9]\{1,\}$' a.txt

1

位置锚定:

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

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

^$:空白行

\

\>或者\b:其前面的字符必须作为词组的尾部出现,注意书写位置

例子:\:表示查找包含root作为单独词组的行

分组:

\(\)

\(ab\)*:表示匹配ab任意次,即要么有ab,要么没有ab,所以全部都会匹配。如abab,ababc,a,b。[root@liang-study basic]# grep '\(ab\)\{1,3\}' a.txt

23ab

ab

aab

aaab

上例,就表示匹配包含ab的1-3次

\(ab\).*\1:引用第一个左括号以及与之对应的右括号中间的所有内容

\2

\3[root@liang-study basic]# grep '\(ab\).*\1' a.txt

23ab cdh ab

aab  root ab

上例中表示匹配到ab后由任意字符后再次匹配ab的行[root@liang-study basic]# grep '\(ab\).*\(cd\).*\2' a.txt

23ab cdh ab cd

匹配第二个左括号以及与之对应的右括号中间的所有内容

扩展正则表达式

字符匹配:

.:匹配任意单个字符(类基本)

[]:匹配指定范围内的任意单个字符(类基本)

[^]:匹配指定范围外的任意单个字符(类基本)

次数匹配:

*:匹配其前面字符任意次(类基本)

?:匹配其前面的字符一次或0次,一般不需要使用\转义

+:匹配其前面字符至少一次

(m,n):匹配其前面字符,至少m次,至多n次。一般不需要使用\转义

位置锚定:(和基本正则表达式相同)

分组:

(ab):

(ab){1}:引用第一个左括号以及与之对应的右括号中间的所有内容

(ab){2}:引用第2个左括号以及与之对应的右括号中间的所有内容

|和or:表示或者

b3ffa0e8bcb02ddda67d946c559cad2e.png

注:可以看出此匹配是完整匹配A|a左边和右边。

d026c1809986186fa6c3ad8f51be818a.png

注:经过分组匹配,即可匹配Ab或者ab了

例子:获取ifconfig 0-255之间的整数ifconfig |grep -E --color '\'

[1-9]:匹配符合条件的个位数

[1-9][0-9]:匹配符合条件的两位数

1[1-9][0-9]:匹配符合条件的1xx的三位数

2[0-4][0-9]:匹配符合条件的2xx的三位数

25[0-4]:匹配符合条件的25x的三位数

47cea5e57410ee6fd8b6e857b3bad471.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值