linux:grep如何工作

linux:grep如何工作,linux,grep,Linux,Grep,我使用grep已经有一段时间了,但是当我使用grep时有一些问题。 当我使用“grep”搜索nginx错误日志上的某些字符串时,我尝试了两种方法: 一: 对于这一点,没有任何发现 二: 为此,可以在error.log中找到包含404的行 在我的示例中,'404.*'是模式,基于结果,我认为当模式使用单引号或双引号时,模式中的通配符可以工作,如果没有引号,通配符将被视为文字字符串。 是这样吗 否,如果当前目录中有任何以404开头的文件名,则在没有引号的情况下,shell会将其视为文件名并自行展开。

我使用grep已经有一段时间了,但是当我使用grep时有一些问题。 当我使用“grep”搜索nginx错误日志上的某些字符串时,我尝试了两种方法: 一:

对于这一点,没有任何发现

二:

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

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

否,如果当前目录中有任何以
404开头的文件名,则在没有引号的情况下,shell会将其视为文件名并自行展开。

~ $ 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.*

是的,你说得对。模式总是应该在引号中使用。为什么不阅读?@HoboSapiens,对不起,我太粗心了。您也可以通过转义“*”来搜索不带引号的内容。请尝试
grep404.\*
@AnuragPeshne谢谢
~ $ 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
~/newdir $ echo '404.*'
404.*