通配符知识部分总结
</ol>符号释义说明表示零个或多个字符下划线’_‘、小数点’.‘、空格’ 也是字符,下同- ### [[:alnum:]]和[a-z0-9A-Z]同义
- sh-4.2$ ls [[:alnum:]]
- 1 2 A
- sh-4.2$ ls [[:upper:]]
- A
复制代码 一个字符中括号,匹配中括号里面字符中的任意一个(表示可以匹配a、b和c,也是使用逗号在中括号中,等同于)同, 只能在中括号中使用,表示不匹配中括号中的任意字符(表示不匹配a、b、c)匹配大括号中字符组合中的任何一个(表示匹配ab、c、de中的任意一项)属于通配符么?字符:包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。来自字符百度词条 <a target="_blank" href="https://www.jb51.net/#fn1" rel="external nofollow" id="fnref1" >1
[linux]另外还有,指定匹配数字、字母(大写,小写)、数字或者字母、点或者下划线,等:
符号释义说明[:digit:]匹配数字仅匹配一个[:lower:]任意小写字母仅匹配一个[:upper:]任意大写字母仅匹配一个[:alpha:]任意字母仅匹配一个[:alnum:]任意一个字母或数字仅匹配一个[:space:]一个空格仅匹配一个[:punct:]表示一个符号可以是键盘上的各种符号,包括但不限于@、#、_、\、(、)、[abc]、&、~、.、### [[:alnum:]]和[a-z0-9A-Z]同义
sh-4.2$ ls [[:alnum:]]
1 2 A
sh-4.2$ ls [[:upper:]]
A等符号,但是不包括空格、数字、字母注释:
1. 以上匹配都是匹配一个;
2.使用使用需要用双中括号,用这样的形式二、通配符示例、案例
使用的linux的shebang是sh或者bash,不能使用tcsh或者csh
使用的文件有:- # 查看文件sh-4.2$ ls linux1 1#2 '1(2' '1linux2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1[abc]2' 1ls 2 A. A.txt
复制代码 示例:- sh-4.2$ ls1 1#2 '1(2' '1linux2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1[abc]2' 1ls 2 A. A.txt sh-4.2$ ls linux1 1#2 '1(2' '1linux2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1[abc]2' 1ls 2 A. A.txt ## [[:digit:]][[:punct:]]? 表示数字符号字符sh-4.2$ ls [[:digit:]][[:punct:]]?1#2 '1&2' '1(2' '1)2' '1linux2' 1.2 '1=2' '1?2' 1@2 '1\2' '1[abc]2' 1_2 1~2
复制代码- sh-4.2$ ls 11sh-4.2$ ls 1linux1 '1 2' 1#2 '1&2' '1(2' '1)2' '1linux2' 1.2 12 '1=2' '1?2' 1@2 '1\2' '1[abc]2' 1_2 1ls 1~2sh-4.2$ ls 1?12
复制代码- ### built-in内中字符的某一个sh-4.2$ ls [12]1 2sh-4.2$ ls [1A]1 A### [[abc]1A]不为1和A的一个字符sh-4.2$ ls [[abc]1A]2
复制代码- ### [a,b,c]字符组合,使用逗号隔开sh-4.2$ ls {[1A],2}1 2 Ash-4.2$ ls {[1A],A_}1 A A_sh-4.2$ ls {[[:digit:]],A_}1 2 A_sh-4.2$ ls {### []内中字符的某一个
- sh-4.2$ ls [12]
- 1 2
- sh-4.2$ ls [1A]
- 1 A
- ### [!1A]不为1和A的一个字符
- sh-4.2$ ls [!1A]
- 2,A_}12 A_
复制代码- sh-4.2$ ls
- 1 1#2 '1(2' '1*2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1^2' 1ls 2 A. A.txt
- sh-4.2$ ls *
- 1 1#2 '1(2' '1*2' 12 '1?2' '1\2' 1_2 1~2 A A.TXT A_ '1 2' '1&2' '1)2' 1.2 '1=2' 1@2 '1^2' 1ls 2 A. A.txt
- ## [[:digit:]][[:punct:]]? 表示数字符号字符
- sh-4.2$ ls [[:digit:]][[:punct:]]?
- 1#2 '1&2' '1(2' '1)2' '1*2' 1.2 '1=2' '1?2' 1@2 '1\2' '1^2' 1_2 1~2
复制代码- ### ??
- sh-4.2$ ls ??
- 12 A. A_
复制代码- ### ?问号可以表示一个字符sh-4.2$ ls ????'1 2'sh-4.2$ ls [[:digit:]][[:punct:]]?1#2 '1&2' '1(2' '1)2' '1linux2' 1.2 '1=2' '1?2' 1@2 '1\2' '1[abc]2' 1_2 1~2### 空格是使用[[:space:]]来匹配sh-4.2$ ls ?[[:space:]][[:space:]]?'1 2'
复制代码 注释:
使用[]时,如果同一个匹配超过一次,可以重复使用。
例如:- ### []内中字符的某一个
- sh-4.2$ ls [12]
- 1 2
- sh-4.2$ ls [1A]
- 1 A
- ### [!1A]不为1和A的一个字符
- sh-4.2$ ls [!1A]
- 2
复制代码 是合法的,但是- ### {}字符组合,使用逗号隔开
- sh-4.2$ ls {[1A],2}
- 1 2 A
- sh-4.2$ ls {[1A],A_}
- 1 A A_
- sh-4.2$ ls {[[:digit:]],A_}
- 1 2 A_
- sh-4.2$ ls {[[:digit:]][[:digit:]],A_}
- 12 A_
复制代码 是不可以的
总结
该节是通配符的种类和使用用例的总结,在- ### [[:alnum:]]和[a-z0-9A-Z]同义
- sh-4.2$ ls [[:alnum:]]
- 1 2 A
- sh-4.2$ ls [[:upper:]]
- A
复制代码 的使用过程中,掌握通配符往往可以事半功倍。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://www.jb51.net/server/339779oa9.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|