shell中通配符、元字符和转义符

上一篇 / 下一篇  2017-10-24 09:50:01 / 个人分类:shell

一、通配符(一种shell实现的路径扩展功能:当shell在参数中遇到通配符,shell将其当作路径或文件名去磁盘上搜索可能的匹配,若存在,则进行代换,否则将该通配符作为一个普通字符传递给命令。)

字符

含义

实例

*

匹配0或多个字符

1*212之间有0个或多个任意字符,如121234232

?

匹配任意一个字符

1?212之间必须有任意的一个字符,如1121a2

[list]

匹配list中的任意一个字符

1[asd]212之间必须有一个字符,且这个字符只能是asd中的一个,如1a21s21d2

[!list]

匹配除list中的任意一个字符

1[!0-9]212之间必须有一个字符,但该字符不能是阿拉伯数字,如1q21e2

[a1-a2]

匹配a1-a2中的任意一个字符

1[0-9]212之间必须有一个字符,且该字符只能是阿拉伯数字,如132142

{st1,st2,...}

匹配st1st2(或更多)中的一个字符串

1{qaz,wsx}212之间只能是qazwsx两个字符串之一

 

注:通配符看似与正则表达式很像,但与正则表达式不同,需注意区分。

二、元字符(正则表达式是描述某种匹配规则的工具,从最基本角度讲,正则中有两种基本字符匹配,特殊字符和一般字符。而元字符即特殊字符,有特殊的表达匹配的某些含义。)

POSIX BREERE都支持的meta字符

字符

BRE/ERE

模式含义

^

BRE,ERE

锚定行或字符串的开始,如‘^grep’匹配所有以grep开头的行。

BRE:仅在正则表达式结尾具有特殊含义;

ERE:在正则表达式任何地方都有特殊含义。

$

BRE,ERE

锚定行或字符串的结束,如‘grep$’匹配所有以grep结束的行。

BRE:仅在正则表达式结尾具有特殊含义;

ERE:在正则表达式任何地方都有特殊含义。

.

BRE,ERE

匹配一个非换行符的字符,如‘gr.p’匹配gr后接一个任意字符,然后是p

*

BRE,ERE

匹配零个或多个先前的字符。如‘*grep’匹配所有一个或多个空格,后紧跟grep的行。

.*一起用可代表任何字符。

[...]

BRE,ERE

[...]匹配方括号内任意一个字符。如‘[Gg]rep’匹配Grepgrep。其中,连字符(-)表示连续字符的范围,如‘[0-9]’匹配所有单个数字。如果^位于方括号开始,则具有相反的含义:不匹配方括号中的任意字符。如:‘[^A-FH-Z]rep’匹配不包含A-RH-Z的椅子字母开头,紧跟rep行。

\

BRE,ERE

用户打开或关闭后续字符的特殊含义。

 

                           grep程序支持的meta字符

字符

模式含义

\<

锚定单词的开始,如\<grep匹配包含以grep开头的单词的行。

\>

锚定单词的结束,如grep\>匹配包含以grep结尾的单词的行。

\w

匹配文字和数字字符,也就是[A-Za-z0-9],如G\w*p匹配以G后跟零个或多个文字或数字,然后是p

\W

\w的反置形式,匹配一个或多个非单词字符,如点号、句号等。

\b

单词锁定符,如\bgrep\b只匹配grep

 

三、转义符(可将通配符或元字符变为普通字符使用。)

字符

说明

‘’

单引号,又称硬转义,其内部所有shell元字符、通配符都会被关闭。注:硬转义中不允许出现单引号。

“”


TAG:

 

评分:0

我来说两句

Open Toolbar