通配符和正则表达式
1.通配符(wild-card pattern)一般是用于匹配文件名,它是由shell解析的,一般用于find(文件搜索)、ls(目录)、cp(复制)、mv(移动)等。
shell常见的通配符有
*
0或多个字符
?
匹配任意一个字符
~
当前用户家目录
~+
当前工作目录
~-
前一个工作目录
[list]
匹配list中的任意一个单一字符
[^list]
匹配除list中的任意单一字符
[0-9]
或[:digit:]
数字0-9匹配
[a-z]或[:lower:]小写字母a-z匹配
[A-Z]
或[:upper:]
大写字母A-Z匹配
[a-z][A-Z]
或[:alpha:]
匹配任意大小写字母
[:alnum:]
任意数字或字母
[:blank:]
水平空白字符
[:space:]
水平或垂直空白字符
[:punct:]
标点符号
[:print:]
可打印符号
[:cntrl:]
:控制(非打印)字符
[:graph:]
:图形字符
[:xdigit:]
:十六进制字符
有时候想让通配符变成普通字符不需要使用它那么就要用上转移符了
' '单引号,其内部的所有的通配符都会被关掉
" "双引号,其内部只允许出现特定的shell字符:$用于参数替换
\ 反斜杠,又叫转义,去除后面紧跟的通配符的特殊意义。
2.正则表达式
正则表达式常用于来检索,替换那些符合某个模式(规则)的文本如sed、grep等,正则表达式有些项目和通配符比较相似,请注意区别。
^
行首
$
行尾
.
任意单一字符
[]
中括号内单一字符
[^]
除中括号内任意单一字符
^[]
行首以中括号内字符
[]$
行尾以中括号内字符
*
前面的字符不确定重复次数
\+
前面字符重复一次以上不确定次数
\?
前面字符重复1或0
\
转义符
.*
任意长度字符
\{n\}
前面字符重复n次
\{n,\}
前面字符重复n次以上
\{m,n\}
前面字符重复m次和n次之间
[::]内部通配符与正则表达式基本一样。