shell(5) 正则表达式.doc

regular expression engine

描述匹配模式的特殊字符和一般字符组成;

 

BRE POSIX 基本正则表达式, ERE 扩展正则表达式; gawk 支持 ERE sed 不支持。

 

1) 正则表达式模式:

l         区分大小写

l         空格作为普通字符处理

l         工具或语言中的使用模式常为 /pattern/

 

特殊字符: .*[]^${}/+?|()

 

BRE

/ 转义 escape 字符

正斜扛也需要转义,虽然它不是特殊字符——因为 / 被用作表示模式?

 

^ ”,定位符,从头开始

sed -n '/^abc/p' ^ 必须放到正则表达式的最前,否则作为普通字符

 

$ ”,定位符,查找末尾

sed -n '/abc$/p'

eg: 查找整行 , '/^this$/p' ;查找空行 '/^$/d';

 

.

匹配换行符外的任何单字符,必须有一个字符;

 

[] ”,字符类

character class (几个字符之一),如 sed -n '/[Yy]es/p'

否定字符类,使用 [^] ,如 [^ch] ,表示不含这几个字符,但是仍然需要一个字符;

定义字符范围,如 [0-9] [a-z] ,[ a-cx-z ]定义多个范围

 

BRE 的特殊字符类:

[[:alpha:]]       任意字母字符,大小写

[[:alnum:]]      任意字母、数字

[[:blank:]]      空格或制表符

[[:digit:]]        数字

[[:lower:]]      任意小写

[[:print:]]       任意可打印

[[:punct:]]      标点符号

[[:space:]]      任意空白字符, 包括垂直制表符, 如空格, lt nl CR

[[:upper:]]      任意大写

[[:cntrl:]]       ASCII 控制字符

[[:graph:]]       非控制非空格

[[:xdigit:]]       16 进制数字

 

*

* 前的字符可不出现或多次出现, /colou*r/

.* ”,出现在一行文本上任意位置的单词

* 用于字符类:

eg: $echo "bt" | sed -n '/b[ac]*t/p'              #TBD ac 可任意出现?

 

ERE

?

* 的不同:不出现或仅出现一次,也可与字符类连用

 

+

* 的不同:必须出现一次或多次

 

{}

对可重复字符出现次数进行限制 (interval) {m} {m,n} /{min,max/} ,{ m, }表示最少 m

be{1}t    # 等价于 bet

gawk 中需指定参数 --re-interval

eg:

echo "bt"|gawk --re-interval '/be{1}t/{print $0}'

用于字符类:

gawk --re-interval "/b[ae]{1,2}t"

 

|

逻辑 or ,指定多个正则表达式, gawk '/cat|dog/'

 

()

分组,一个组合作为一个标准字符处理, eg:

gawk '/sat(urday)?/        # 要求 urday 出现 0 1 次;

gawk '/(c|b)a(b/t)/'               #TBD :等价于 '[cb]a[bt]'??

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值