|
|
我刚刚接触linux不久,最近被一个问题困扰,希望各位大虾给与指教。
对于shell下的文件名模式匹配和正则表达式匹配,存在的疑惑是:是否对于grep命令使用的是正则表达式的模式匹配?而对于如ls,cd,rm都是文件名模式匹配?
第二,对于grep命令来说,有的时候将要匹配的模式打上双引号之后,为何结果就不一样了?例如:
[zhangry@tulip z]$ cat test.log
a.log
ab.log
b.log
test.log //test.log中包括这个四行
[zhangry@tulip z]$ cat b.log //b.log包括这一行,其余文件都是空的
a.log
[zhangry@tulip z]$ grep a* test.log //按照我的理解,这里的意思就应该a可以 出现0次或者多次,那么应该是匹配 test.log中的所有行,可是,结果为什么是 这个样子?而且它似乎在所有的文件里都 找了,而不是只在test.log里面找
test.log:a.log
[zhangry@tulip z]$ grep "a*" test.log //加上双引号就对了,这个是什么道理呢?
a.log
ab.log
b.log
test.log
[zhangry@tulip z]$ grep * test.log //对于正则表达式,单一个*是空串的意思么?那为何还有结果?
b.log:a.log
test.log:a.log
test.log:a.log
谢谢~ |
|