存档

文章标签 ‘Regular Expressions’

正则表达式中的*与Shell通配符中的*

2011年1月12日 1 条评论

一开始想到一个问题:

正则表达式中的meta字符* 定义是匹配*之前的0到任意个字符,但是平时在用的时候,比如说想删除一个目录下的所有log文件,命令是rm -f *.log,这里的*之前没有任何字符啊,定义的.是可以匹配任意的单个字符,但是如果运行命令rm -rf ..log或者rm -rf ./.log都是不对的… 

搞了一下终于明白了,Shell通配符(又叫Wildchar)跟正则表达式(Regual Expression )是两套不同的匹配法则,并不一样,具体点的内容可以看下http://blog.csdn.net/zdl1016/archive/2010/08/22/5829499.aspx或者搜索一下。

在文本过滤工具里,都是用正则表达式,比如像awk,sed等,是针对文件的内容的。
通配符多用在文件名上,比如查找find,ls,cp,等等。

所以在命令行上要用到正则表达式的时候,一般都会用引号括起来,比如说 grep或者sed。