1. 核心通配符
作用:Path name Expansion(路径名扩展) ,由shell解析,用于文件名匹配。
例:
ls /etc/*.conf\>
*:任意长度的任意字符
?:任意单个字符
[ ] :指定范围内任意单个字符
[0-9],[A-Z],[a-z],[a-z0-9]
[[:upper:]] :所有大写字母
[[:lower:]] :所有小写字母
[[:alpha:]] :所有字母
[[:digit:]] :所有数字
[[:alnum:]] :所有字母和数字
[[:space:]] :空白字符
[[:punct:]] :所有标点符号
[^] : 指定范围外的任意单个字符
[∧[:upper:]]
[∧0-9]
[∧[:alnum:]]
例:
ls -d /var/l?[[:lower:]]
显示var目录下以 l 开头、以小写字母结尾、中间匹配任意单个字符的目录和文件。
ls -d /etc/[0-9]*[^0-9]
显示etc目录下以单个数字开头、以0-9以外任意单个字符结尾、中间匹配任意长度任意字符的目录和文件。
[root@hadoop ~]# ls -dl /etc/[[:alnum:]]*[[:digit:]]
显示etc目录下以任意字母和数字开头、以任意数字结尾、中间匹配任意长度的任意字符的目录和文件的长属性。
[root@hadoop ~]# cp -r /etc/m*[^0-9] /tmp/metc.d
递归复制etc目录下以m开头、以单个数字之外的任意字符结尾、中间匹配任意长度任意字符的目录和文件到tmp目录下的metc.d目录下。
[root@hadoop bin]# cp -r /bin/[aflr]* /tmp/command
递归复制bin目录下以a/f/l/r中任意一个开头、后跟任意长度任意字符的目录和文件到tmp目录下的command目录下。
2. 正则表达式
正则表达式:Regual Expression**
概述:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意思,而是用于表示控制和通配的作用;分两类:基本正则表达式(BRE)和扩展正则表达式(ERE)。
BRE云字符:
字符匹配
表达式 | 含义 |
---|---|
. | 匹配任意单个字符 |
[ ] | 匹配指定范围内任意单个字符 |
[^] | 匹配指定范围外任意单个字符 |
匹配次数
表达式 | 含义 |
---|---|
* | 匹配其前面的字符任意次 |
.* | 匹配任意长度的任意字符 |
\? | 匹配其前面的字符0次或1次 |
+ | 匹配其前面的字符1次或多次 |
\{m\} | 匹配其前面的字符m次 |
\{m,n\} | 匹配其前面的字符至少m次,至多n次 |
\{0,n\} | 至多n次 |
\{m,\} | 至少m次 |
位置锚定
表达式 | 含义 |
---|---|
^ | 行首锚定;用于最左侧 |
$ | 行尾锚定;用于最右侧 |
^PATTERN$ | 用PATTERN来匹配整行 |
^$ | 空白行 |
∧[[:space:]]*$ | 空行或包含空白字符的行 |
\<或\b | 词首锚定;用于单词左侧 |
\>或\b | 词尾锚定;用于单词右侧 |
<PATTERN> | 匹配完整单词 |
分组及引用
表达式 | 含义 |
---|---|
\(\) | 将一个或多个字符捆绑在一起,当做一个整体进行处理 |
\(\)ab\1 | 自左侧起,第一个括号之间的模式所匹配到的字符 |
(\)ab\2 | 自左侧起,第二个括号之间的模式所匹配到的字符 |
(\)ab\3 | … |
ERE:
字符匹配
同BRE一样
匹配次数
同BRE一样
位置锚定
同BRE一样
分组及引用
表达式 | 含义 |
---|---|
() | 括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量中 |
()……\1 | 引用 |
a|b | a或者b |