您的位置:首页 > 运维架构 > Shell

Linux_shell_正则表达式

2010-05-28 23:33 656 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: