当前位置: 技术问答>linux和unix
关于正则表达式匹配问题
来源: 互联网 发布时间:2016-08-01
本文导语: 各位大虾,我有这么一个应用场景: [omc@bupepuku ~]$ touch ama1.man [omc@bupepuku ~]$ touch ama11.man [omc@bupepuku ~]$ touch ama111.man [omc@bupepuku ~]$ ls ama[0-9]{1,3}.man // 这个错在哪里呢 ls: ama[0-9]{1,3}.man: No such file or director...
各位大虾,我有这么一个应用场景:
[omc@bupepuku ~]$ touch ama1.man
[omc@bupepuku ~]$ touch ama11.man
[omc@bupepuku ~]$ touch ama111.man
[omc@bupepuku ~]$ ls ama[0-9]{1,3}.man // 这个错在哪里呢
ls: ama[0-9]{1,3}.man: No such file or directory
[omc@bupepuku ~]$ touch ama1.man
[omc@bupepuku ~]$ touch ama11.man
[omc@bupepuku ~]$ touch ama111.man
[omc@bupepuku ~]$ ls ama[0-9]{1,3}.man // 这个错在哪里呢
ls: ama[0-9]{1,3}.man: No such file or directory
|
其实ls是不支持正则表达式的 可能经常这样用ls -l * 是显示当前目录所有文件 而ls -l a* 代表的是以a开头的任何文件 但是这个*的表达不是正则而是通配符 在正则表达式中 要找到含有以a开头的文件则必须要这样
ls | grep -n '^a.*'
ls | grep -n '^a.*'
|
shopt 你可以看到当前的shell设置
shopt -s dotglob 可以打开模式匹配,
然后ls ama[0-9]{1,3}.man应该就可以工作了。
shopt -s dotglob 可以打开模式匹配,
然后ls ama[0-9]{1,3}.man应该就可以工作了。
|
ls | grep "ama[0-9]{1,3}.man"
|
正则表达式可用在shell,awk,sed等多种工具中,但是支持的程度差别很大,shell对正则表达式支持很有限,很多不能用