通配符也叫文件名替换,它主要是作用于匹配文件名,常用命令是ls、find、cp、mv;
正则表达式主要是作用于匹配文件中的字符串,常用命令命令是grep、awk、sed。
通配符日常使用:
image*** 匹配0或者多个字符**
实例:
#匹配前:
[root@localhost test]# ls
f f-1.txt f-2.txt f-3.txt ff
#匹配后:
[root@localhost test]# ls f*
f f-1.txt f-2.txt f-3.txt ff
因为f后面可以跟0个或者多个字符,所有f文件也匹配到了。
[] 匹配括号中的单个字符
实例:
#匹配前:
[root@localhost test]# ls
f f-1.txt f-2.txt f-3.txt ff
#匹配后:
[root@localhost test]# ls f-[12].txt
f-1.txt f-2.txt
这里要注意,因为匹配的单个字符,所以后面.txt也要补全,否则会报文件找不到。
? 匹配任意单个字符
实例:
#匹配前:
[root@localhost test]# ls
f f-1.txt f-2.txt f-3.txt ff
#匹配后:
[root@localhost test]# ls f-?.txt
f-1.txt f-2.txt f-3.txt
[!] 匹配不在括号中的任意单个字符
实例:
#匹配前:
[root@localhost test]# ls
f f-1.txt f-2.txt f-3.txt ff
#匹配后:
[root@localhost test]# ls f-[!12].txt
f-3.txt
[a-z] 匹配a到z中的任意单个字符,表示范围,只能用于查找文件,不能创建
实例:
#匹配前:
[root@localhost test]# ls
f f-12.txt f-1.txt f-2.txt f-3.txt
#匹配后:
[root@localhost test]# ls f-[1-2].txt
f-1.txt f-2.txt
{a,b,c}/{a..z} 以逗号分隔时,表示单独字符,以两个点号分隔时,表示连续字符。可用于查找和创建文件。
实例:
匹配前:
[root@localhost test]# ls
a.txt d.txt f-12.txt f-3.txt g.txt j.txt m.txt p.txt s.txt u.txt x.txt
b.txt e.txt f-1.txt ff h.txt k.txt n.txt q.txt t-[1-9].txt v.txt y.txt
c.txt f f-2.txt f.txt i.txt l.txt o.txt r.txt t.txt w.txt z.txt
匹配后:
[root@localhost test]# ls {a..z}.txt
a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
匹配后:
[root@localhost test]# ls {a,b,c}.txt
a.txt b.txt c.txt
ps:当用逗号分隔时,查找效果和[abc]是一样的。
正则表达式日常使用:
imageps:做个纠正,"{}"是扩展正则,所以grep不能直接使用,需要加-E或者使用egrep。
* 匹配前一个字符0次或者多次
实例:
image. 匹配除了换行符以外的任意单个字符
实例:
image^ 锚定行首
实例:
image$ 锚定行尾
实例:
image[] 匹配括号中指定的任意单个字符
实例:
image[^] 匹配括号中以外的任意单个字符
实例:
image\ 转义符,取消元字符的特殊含义
实例:
image\{n\} 表示前面的字符出现几次,如果不想使用\,可以使用egrep
实例:
image\{n,\} 至少匹配前面的字符n次
实例:
image\{n,m\} 至少匹配前面的字符n次,但是不得多于m次
实例:
imageps:一定要注意,在通配符中,{}可以用来表示连续的字符,但是在正则表达式中,是表示前面字符出现的次数。
扩展正则
符号 释义
| 或者
"+" 前一个字符连续出现1次或一次以上
() 把括号内的字符当成一个整体(1个字符),在后项引用中使用
{m,n} 匹配前一个字符至少m次之多n次
{m} 匹配前一个字符m次
{m,} 匹配前一个字符至少出现m次,至多不限
{,n} 前一个字符最少出现0次最多n次
? 匹配前一个字符1次或0次
网友评论