linux:grep如何工作

时间:2015-07-27 05:14:52

标签: linux grep

我使用grep已经有一段时间了,但是当我使用grep时有一些问题。 当我使用' grep'要在nginx错误日志中搜索一些字符串,我尝试两种方法: 之一:

grep 404.* error.log

为此,找不到任何东西

2:

grep '404.*' error.log

为此,可以在error.log中找到包含404的行

在我的例子中,' 404。*'是模式,基于结果,我认为当带有单引号或双引号的模式时,模式中的通配符可以工作,如果没有引号,则通配符只被视为文字字符串。 这样对吗?

1 个答案:

答案 0 :(得分:1)

不,如果没有引号,shell会将其视为glob pattern,如果当前目录中有404.的任何文件名,则将其展开:

~ $ mkdir newdir
~ $ cd newdir
~/newdir $ touch 404.foo 404.bar somethingelse
~/newdir $ ls
404.bar 404.foo somethingelse
~/newdir $ echo 404.*
404.bar 404.foo

当你使用grep时,这不是你想要的,所以你应该总是引用搜索模式。

~/newdir $ echo '404.*'
404.*