shell编程——正则表达式的应用

1    匹配单个字符

单个一般字符:str=`grep "a" demo.txt`

转义后的字符:如果想要匹配这些元字符本身,则需要在这些字符的前面加上转义字符“\”,只保留其字面意义,如“\.”,匹配圆点“.”

反斜线“\”也是一个元字符,如果想要匹配反斜线,也需要在其前面加上转义字符,即表达式“\\”表示匹配一个反斜线

尽管在通常情况下,大方括号中含有多个字符,但是一次只能从这些字符中选择一个,因此,方括号表达式仍然表示的是匹配单个字符。

当元字符文娱方括号中时,除了极少数的几个元字符,例如连字符“-”或者“^”之外,其他元字符都将失去其特殊意义,只保留字面意义。

2    匹配多个字符

在基本正则表达式中,用户可以使用元字符“\{m,n\}”表示,而在扩展表达式和Perl表达式中,用户在使用前面的元字符时无需将花括号转义,直接使用“{m,n}”即可,其中参数m表示最少出现的次数,而参数n表示前置字符最多出现的次数。

{m}表示前置字符出现m次,{m,}表示前置字符最少出现m次

3    匹配字符串的开头和结尾

“^”和"$"分别用来匹配文本行的开头字符和结尾字符

4    正则表达式运算符优先级(高到低)

\

[]

* + ? {m} {m,} {m,n}

普通字符

^ $

|

5    子表达式

所谓子表达式,是指由多个普通字符或者元字符组成的一个小的正则表达式,作为一个大的正则表达式的一部分来使用,而不是单独使用。子表达式用圆括号()括起来。

6    通配符

shell本身不支持正则表达式,使用正则表达式的是一些shell命令和工具,例如:grep、awk、sed等。

但是shell使用了正则表达式中的某些元字符作为其通配符,常用的有* ? [] {}等,但与正则表达式中有些区别。

*表示匹配任意字符,而非其前导字符的0次或者多次

?表示一个字符,而非其前导字符的0次或者1次重复

7    grep命令

grep使用正则表达式来搜索文本,并且把匹配的文本行打印出来

grep [options] pattern [file...]

grep的pattern非常的灵活,可以是字符串,也可以是变量,还可以是正则表达式。

但是如果模式中含空格,则需要将模式使用双引号引起来,以避免grep命令将空格后面的模式误认为文件名。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值