shell中通配符、元字符和转义符
上一篇 /
下一篇 2017-10-24 09:50:01
/ 个人分类:shell
一、通配符(一种shell实现的路径扩展功能:当shell在参数中遇到通配符,shell将其当作路径或文件名去磁盘上搜索可能的匹配,若存在,则进行代换,否则将该通配符作为一个普通字符传递给命令。)
字符 | 含义 | 实例 |
* | 匹配0或多个字符 | 1*2:1和2之间有0个或多个任意字符,如12,1234232 |
? | 匹配任意一个字符 | 1?2:1和2之间必须有任意的一个字符,如112,1a2 |
[list] | 匹配list中的任意一个字符 | 1[asd]2:1和2之间必须有一个字符,且这个字符只能是a或s或d中的一个,如1a2,1s2,1d2 |
[!list] | 匹配除list中的任意一个字符 | 1[!0-9]2:1和2之间必须有一个字符,但该字符不能是阿拉伯数字,如1q2,1e2 |
[a1-a2] | 匹配a1-a2中的任意一个字符 | 1[0-9]2:1和2之间必须有一个字符,且该字符只能是阿拉伯数字,如132,142 |
{st1,st2,...} | 匹配st1或st2(或更多)中的一个字符串 | 1{qaz,wsx}2:1和2之间只能是qaz或wsx两个字符串之一 |
注:通配符看似与正则表达式很像,但与正则表达式不同,需注意区分。
二、元字符(正则表达式是描述某种匹配规则的工具,从最基本角度讲,正则中有两种基本字符匹配,特殊字符和一般字符。而元字符即特殊字符,有特殊的表达匹配的某些含义。)
POSIX BRE和ERE都支持的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’匹配Grep和grep。其中,连字符(-)表示连续字符的范围,如‘[0-9]’匹配所有单个数字。如果^位于方括号开始,则具有相反的含义:不匹配方括号中的任意字符。如:‘[^A-FH-Z]rep’匹配不包含A-R和H-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: