Linux_shell_正则表达式

1.使用句点匹配单字符

句点 "." 可以匹配任意单字符。

在ls -l命令中 可以匹配一定的权限

下面命令列出所有权限(所有用户)具有执行权限

# ls -l | grep ...x..x..x

drwxr-xr-x   2 root root  4096 05-22 12:52 bin
drwxr-xr-x   4 root root  1024 05-21 17:11 boot
drwxr-xr-x  11 root root  4080 05-28 15:11 dev

下面例子解释为前四个字符是任意 后一个必须为A 最后一位任意字符

....A.

1234A7

3487A0

 

 

2.在行首以^匹配字符或单词字符序列

只允许在一行的开始匹配字符或单词

下面命令解释为 每行第一个字符是d

# ls -l | grep ^d
drwxr-xr-x  15 root root  4096 2008-10-30 usr
drwxr-xr-x  22 root root  4096 05-21 17:15 var

 

下面命令解释为 结果将匹配每行开始为007的字符串或单词

# ls -l | grep ^007

 

 

将以上两种结合起来使用

下面命令解释为 在每行开始 匹配任意三个字符 后跟4XC 最后为任意4个字符 ^在正则中使用频繁

^...4XC....

1234XC0099    -match

1235XC0099    -no match

 

 

在行首前四个字符为good 匹配命令如下

^good

 

 

 

 

3.在行尾以$匹配字符串或字符

可以说$与^正好相反 它在行为匹配字符串或字符

下面命令解释为 假定要匹配以good结尾的所有行

good$

 

如果要匹配所有行 如下命令

^$

 

返回值包含一个字符的行

^.$

 

 

 

4.使用*匹配字符串中的但字符或其重复序列

下面命令解释 将匹配字符u一次或多次

compu*t

 

computer

computing

compuut

compuuuuuuut

 

下面命令解释 匹配3一次或多次

123*

 

123

123333

123444444

1233344

 

 

 

5.使用/屏蔽一个特殊字符的含义

有时候查找一些字符或字符串,而它们包含了系统指定为特殊字符的一个字符

特殊字符:$?+^[]"

 

 

 

假定要匹配包含字符"."的各行而"."代表匹配任意字符的特殊字符 因此需要屏蔽其含义 操作如下:

/.

上面模式不认为反斜杠后面的是特殊字符(1.使用句点匹配单字符)而是一个普通的字符

 

 

6.使用[]匹配特定字符或字符串集 可以用逗号将括弧内要匹配的不同字符串分开

使用"-" 表示一个字符串范围 表明字符串范围从 "-"左边字符开始 到"-"右边字符结束

 

假定要匹配任意一个数字 如下命令

[0123456789] 或 [0-9]

 

匹配任意小写字母

[a-z]

匹配任意字母

[A-Za-z]

 

任意字母或数字

[A-Za-z0-9]

 

 

下面命令解释为 匹配一个单词 以s开头中间有一个任意字母 以t结尾

s[A-Za-z]t

 

下面解释为将匹配Computer 或 computer

[Cc]omputer

 

 

将匹配system后跟句点的所有单词

[s]ystem/.

 

 

注意: 当^直接使用在第一个括号内 表示否定或不匹配[]中的内容

 

匹配任一非字母型字符 [^A-Za-z]

匹配任一非数字型字符 [^0-9]

 

 

 

 

7.使用 /{/} 匹配模式结果出现的次数

使用*可匹配所有匹配结果任意次 如果只想要知道次数 就需用/{/}

三种形式:

pattern/{n/}     匹配模式出现n次

pattern/{n,/}    匹配模式出现最少n次

pattern/{n,m}  匹配模式出现n到m次之间 n,m为0-255中任意整数

 

 

匹配值出现两次

 A/{2/}B

匹配值为:AAB

 

匹配A至少出现4次

A/{4,/}B

匹配值为:

AAAAB或AAAAAAAB或AAAAAAAAAAAAB

 

 匹配A出现的次数范围在2到4次直接

A/{2,4}B

 匹配值为:AAB、AAAB、AAAAB 不能为AB 、AAAAAB、AAAAAAAAAAAAAAB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值