通配符它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通配符有几下几种:*:匹配任意多个字符?:匹配任意一个字符[...]:匹配中括号内出现的任意一个字符[!...]:不匹配中括号内出现的任意一个字符 一般出现在要shell命令或脚本中,匹配特定的文件名正则表达式它是一个字符匹配标准,一些命令工具按此标准实现字符匹配,根据命令支持的匹配功能可分为基础正则表达式和扩展正则表达式,常用于支持正则表达式的工具,如sed,grep,awk...有如下一些常用的匹配元字符: 字符匹配.:匹配任意单个字符*:匹配其前面一个字符出现任意次?:匹配其前面的字符1次或0次+:匹配其前面一个字符出现至少一次(在扩展正则表达式中) 位置匹配^:锚定行首$:锚定行尾\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现\B:非单词的开头或结尾^$:空白行 分组() :(ab)* : 匹配ab这个分组出现任意次\1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2,\3 特殊子字符类:[:alnum:] :任何字母和数字[:alpha:] :任何字母[:cntrl:] :控制字符. 在ASCII表中对应八进制000 到 037, 和177 ('DEL').[:digit:] :任何数字[:graph:] :匹配打印字符,相当于'[:alnum:]' +'[:punct:]'.[:lower:] :小写字母[:print:] :可打印字符,相当于 '[:alnum:]', '[:punct:]', 和space.[:punct:] 标点符号,'! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ' { | } ~'[:space:] 空白字符,tab, newline, vertical tab, form feed, carriage return, and space.[:upper:] 大写字母[:xdigit:] 任何16进制的数字,相当于[0-9a-fA-F]所以:^[[:space:]]*$ :匹配没有任何内容的行 需要注意:[]中的特殊字符如.已经失去了其特殊含义,和方括号中的普通字符[abc]一样。
通配符作用主要是用来匹配文件名:例如:rm -fr *oldboy #删除oldboy结尾。正则表达式主要是用来过滤文件内容:例如:grep "^$" oldboy.txt #过滤空行。更多内容对比推荐一本细致实战书籍: