1. Shell通配符
Shell通配符一般用于数据处理或文件名匹配
通配符 | 说明 | 举例 |
* | 与零个或多个字符匹配 | # ls /etc/sys* 列出/etc下所有以sys开头的文件 |
? | 与任何单个字符匹配 | # ls /etc/?? 找出/etc/目录下所有由两个字符组成的文件 |
[ ] | 与[ ]中任何一个字符匹配 | # ls /etc/[f-g]*.conf 找出/etc下与f-g范围内的字符开头,并以.conf 的结尾的文件 |
[ ! ] | 与[ ]之外的任何一字符匹配 | # ls /etc/y*[!.conf] 找以y开头不以.conf结尾的文件 |
2. 正则表达式元字符
正则表达式之所以拥有过滤文本的功能,是因为它定义了一系列的元字符,元字符与替他字符组合起立形成一定的规则,而只有符合规则的文本才能保留下来。
2.1基础正则表达式元字符
符号 | 说明 | 举例 |
限定符 * | 用于匹配前导字符0次或多次 | hel*o |
点字符 . | 用来匹配除换行符\n外任意的单个字符,一个 . 匹配一个字符 | ...config |
行首定位符 ^ | 用来匹配行首字符,表示行首字符是 ^ 后面的那个字符 | # ls /etc/ | grep "^sys" |
行尾定位符 $ | 用来陪陪文本行末尾的字符,与 ^ 作用相反 | # ls /etc/ grep conf$ |
字符组 [ ] | 用来指定一个字符集合的,只能匹配单个字符 | # ls /etc/ | grep "^ab[0-9]" |
排除型字符组 [^] | 表示不匹配其中列出的任意字符 |
注:元字符 “ * ”或“ . ”位于“[ ]"符号之中,便仅表示一个普通的字符,不再具有特殊意义。
2.2 扩展正则表达式元字符
符号 | 说明 | 举例 |
限定符 + | 与 * 功能相似,但要求至少匹配一次 | # ls /etc/ | egrep "^ss+" |
限定符 ? | 限定前导符号最多出现1次 | # ls /etc/ | egrep "^ss?" |
“|”符号和“( )”符号 | | 符号实现正则表达式之间的“或”运算,( )表示一组可选值的集合,这两者符号经常结合一起使用,能够匹配多个字符,两者结合比 [ ] 功能更强大 | ls /etc/ | egrep "(ssh|ssl|^yum)" |
注:在使用 “ + ”符号时使用了egrep命令,这是因为grep命令使用的时基本正则表达式,而egrep命令默认使用扩展正则表达式。如果使用grep命令加上-E选项。