您的位置:首页 > 运维架构 > Linux

linux中的通配符和正则表达式

2013-10-13 13:35 357 查看
总结:
通配符,即globbing,多用于文件名上,如ls,tar,find等命令
正则表达式,则主要针对文件内容,如grep,awk,sed等命令

通配符:
当查找文件时,可以使用通配符来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,也可以使用通配符。
例如:当你查看当前目录下所有以virtual开头的目录时



用*可以代替之后的所有字符。
再如:当你想删去当前目录下所有file开头的文件时
rm -rf file*


通配符的语法:
*任意长度的任意字符
?任意单个字符
^脱字符,取反,指定范围外的任意单个字符
[]指定范围内的任意单个字符
[0-9]所有的数字
[a-z]所有的小写字母
[A-Z]所有的大写字母
[a-zA-Z]所有的字母
[0-9a-zA-Z]所有的数字和字母
注:红色部分测试时有些问题。



在test目录下有两个文件,abc和ABC。当使用[a-z]测试时,两个文件都显示出来了,而不是只显示abc。
通配符中字符的集合:

[:digit:]所有数字, 相当于0-9
[:lower:]所有的小写字母
[:upper:]所有的大写字母
[:alpha:]所有的字母
[:alnum:]相当于[0-9a-zA-Z]
[:space:]空白字符
[:punct:]所有标点符号
[:digit:]只是相当于0-9,在使用时,应使用[[:digit:]]
注:测试上面的例子,完全没有问题




正则表达式:
正则表达式(也称为“regex”或“regexp”)是一种用来描述文本模式的特殊语法。在 Linux 系统上,正则表达式通常被用来查找文本的模式,以及对文本流执行“搜索-替换”操作以及其它功能。
例如:找出/etc/passwd中以root开头的行



再如:将/etc/passwd中bash为/sbin/nologin的用户找出来




正则式的语法:
^锚定行首的符合条件的内容,用法格式“^pattern”
$锚定行尾的符合条件的内容,用法格式“pattern$”
.匹配任意单个字符
*匹配紧挨在其前面的字符任意次
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
[a-z], [A-Z], [0-9]同通配符
[:lower:],[:upper:],[:digit:]
同上
[:alpha:],[:alnum:],[:space:],[:punct:]同上
\?匹配紧挨在其前面的字符0次或1次
\{m,n\}匹配其前面的字符至少m次,至多n次
\<锚定词首,用法格式:\<pattern
\>锚定词尾,用法格式:pattern\>
\(\)分组,用法格式: \(pattern\)
另附上扩展正则表达式:
可在egrep中使用,只列出与标准正则表达式不一样的部分。
+匹配其前面的字符至少1次
?匹配其前面的字符0次或1次
{m,n}匹配其前面出现的字符至少m次,至多n次
()分组,支持引用\1, \2
a|b二选一
^ $ . * [] [^] \< \>
与标准正则式相同
本文出自 “footage of linux” 博客,请务必保留此出处http://evanlinux.blog.51cto.com/7247558/1308363
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: