它是由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]一样。
通配符 1、基本的通配符有哪些? ·“?”可替代单个字符。 ·“*”可替代任意字符。 ·方括号“[charset]”可替代charset集中的任何单个字符。 对最后一条做些解释。[cChH]通配符便可替代c或h字符的大小写形式。 通配符集还能描述介于字符对之间的所有字符。如“[a-z]”就可以代 替任意小写字母,而[a-zA-Z]则可替代任意字母。注意可替代的字符 包括字符包括字符对之间的所有字符。 与DOS相比,UNIX的通配符机制要比DOS好得多。在DOS中,任何在“*” 之后,在“.”之彰的字符均被忽略,所以下面的指令将不能得到你想 象的结果。 del *bak.* 在DOS中,用户只能用此命令删除当前目前下的所有文件,除非系统要 求你不这样做。而在UNIX系统中,“*”可替代包括0在内的任意数字的 字符,但一行中的其余特征也仍需匹配,因此“bak.*”可匹配 newbak.save、oldbak.new甚至bak.temp,但不能和newbak匹配,因为后 者不含“.”。这非常巧妙,可大大方便用户,而“*bak”则可匹配以上 所有的词条,包括newbak。 2、能在一条指令中用多个通配符吗? 可以,如 rm a*out*tmp? 该命令可以删除一系列临时性的输出文件,如ab.out.temp1、ab.out.temp1 等。 3、如何利用通配符使指令更灵活? UNIX可将有一定关的文件看作一集合的一部分,用户可以用该集合去匹配。 所以,如果你需要删除file1.temp、file2.temp……file9.temp,只须健入: rm file[0-9].temp 该技巧的用处在于可以用删除那些相要删除的文件。如果你每天都要为一个 非常重要的 数据库 做一个“dump”报告,你把文件存入dump.date%h%d, 它包括一系列文件如下: dump.jun23 dump jun24 dump jun25 dump.jun26 再让我们假设因为每个文件的容量都在100M左右,所以磁盘空间很快会被占满, 因此需要每隔几天删去一些老的文件,只留下最近的两个文件,为此,键入: rm –i du*[34] 这条指令将删去那些以“du”开头并以“3”或“4”结尾的文件。通配符主要有:
1.星号,用来模糊搜索文件。当查找文件夹时,可以使用通配符星号来代替一个或多个真正字符。
2.问号,作用也是用来模糊搜索文件。当不知道真正字符或者懒得输入完整名字时,常常使用通配符问号代替一个或多个真正的字符。
可以使用星号代替零个、单个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。
扩展资料:
在电信中,通配符可用于代替不确定字符。
1.在高频自动链路建立协议中,通配符”?“匹配36个字符中的任一个,这36个字符由26个英文字母和10个数字组成。
2.通配符在表示一个字符或者一个字符串时必须先定义。
3.在正则表达式中,英文句号(.)匹配单个字符,结合一个星号(.*)匹配任意多个字符。
在针对较长字符串匹配或对大量的字符串进行匹配时应该注意,后匹配(ABC*)比前匹配(*ABC)有着十分明显的效率优势。因为后匹配(ABC*)可以立即排除那些不是以“A”开头的记录,接着排除第二个字符不是“B”的;而前匹配(*ABC)需要尝试匹配每一个字符。在一些需要高性能的环境应该尽量避免使用前匹配,或者通过其他条件筛选减少了数据量后再使用前匹配搜索。
参考资料来源:百度百科——通配符
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)