正则表达式与通配符

  • 本文为慕课网shell编程之正则表达式第一章第一节关于正则表达式与通配符的笔记,在此感谢 Tony 老师的讲解。

    正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用与字符串的模式分割、匹配、查找及替换操作。

    正则表达式与通配符

    正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed 等命令可以支持正则表达式。

    通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp 这些命令不支持正则表达式,所以只能用 shell 自己的通配符来匹配了。

    通配符

  • * 匹配任意内容
  • ? 匹配任意一个内容
  • [] 匹配括号中的一个字符
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# ls
anaconda-ks.cfg student.txt test
[root@localhost ~]# ls * #显示当前目录下所有内容,如果目录中有文件,则会列出目录中所有子文件
anaconda-ks.cfg student.txt

test:
nest1 nest2 test1 test2
[root@localhost ~]# cd test
[root@localhost test]# ls ?est1
nest1 test1
1
2
3
4
5
6
7
8
9
10
[root@localhost test]# ls ????2 #“?”只匹配任意一个字符
nest2 test2
[root@localhost test]# ls *1
nest1 test1
[root@localhost test]# ls t* #“*”匹配任意多个字符,可以是 0 个
test1 test2
[root@localhost test]# ls [tn]est1
nest1 test1
[root@localhost test]# ls test[12] #“[]”只匹配其中一个字符
test1 test2

Linux系统中,一般情况下

  • 正则用来匹配文件中的数据,通配符用来匹配文件名
  • 正则是包含匹配,通配符是完全匹配
  • 搜索字符串的命令能够识别正则,搜索文件的命令能够识别通配符