Macos 试图使用某种模式将结果grep到文件中,会出现奇怪的行为

Macos 试图使用某种模式将结果grep到文件中,会出现奇怪的行为,macos,terminal,grep,Macos,Terminal,Grep,我正在尝试grep一个日志文件,并将结果传递到output.txt。这是我目前的尝试: grep-n-i“admin”mylog.log*>output.txt 我试图从日志中获取任何包含“admin”的内容。然而,我有两个问题: 我实际上想要任何一行有“admin”的,除非是“administrate.png” 出于某种原因,在我的终端中,过了一会儿,它开始发出奇怪的消息,如: grep:OneOfMyFolders:是一个目录 grep:SomeOtherFolder:是一个目录 为什么要

我正在尝试grep一个日志文件,并将结果传递到output.txt。这是我目前的尝试:

grep-n-i“admin”mylog.log*>output.txt

我试图从日志中获取任何包含“admin”的内容。然而,我有两个问题:

  • 我实际上想要任何一行有“admin”的,除非是“administrate.png”

  • 出于某种原因,在我的终端中,过了一会儿,它开始发出奇怪的消息,如:

    grep:OneOfMyFolders:是一个目录

    grep:SomeOtherFolder:是一个目录

  • 为什么要这样做?如何停止?

    1)下面将删除带有administrate.png的行

     grep -n -i "admin" mylog.log * | grep -v "administer.png" > output.txt
    
    2) 由于*通配符,您要求grep查看所有文件(是的,目录被视为文件)。如果您关心的唯一文件是mylog.log,请删除*。或者尝试其他通配符表达式,如*.log(假设您关心的所有文件都有.log扩展名)或*.*(如果文件包含扩展名,而目录不包含扩展名)。

    1)以下内容将删除带有administrate.png的行

     grep -n -i "admin" mylog.log * | grep -v "administer.png" > output.txt
    
    2) 由于*通配符,您要求grep查看所有文件(是的,目录被视为文件)。如果您关心的唯一文件是mylog.log,请删除*。或者尝试其他通配符表达式,如*.log(假设您关心的所有文件都有.log扩展名)或*.*(如果文件包含扩展名,而目录没有扩展名)。

    删除mylog.log之后的“*”,以避免处理目录中的其他文件

    使用
    grep-r“\bWORD\b”
    仅计算整个单词

    grep -n -i -r "\badmin\b"  mylog.log  > output.txt
    
    删除mylog.log之后的“*”以避免处理目录中的其他文件

    使用
    grep-r“\bWORD\b”
    仅计算整个单词

    grep -n -i -r "\badmin\b"  mylog.log  > output.txt
    

    v在做什么?不包括?-v是用于移除线路的开关。。man grep应该向您显示有关该命令和所有可使用的开关的信息没有办法使用某种正则表达式吗?比如“包括这个但不包括这个或这个或这个”?我知道的唯一方法是通过两次搜索。Igor的答案是寻找一个与“admin”完全匹配的词,如果这是你唯一感兴趣的词,那么这是一个更好的答案。。。但是我有一种感觉,您可能正在寻找包含字符串“admin”的其他单词-v在做什么?不包括?-v是用于移除线路的开关。。man grep应该向您显示有关该命令和所有可使用的开关的信息没有办法使用某种正则表达式吗?比如“包括这个但不包括这个或这个或这个”?我知道的唯一方法是通过两次搜索。Igor的答案是寻找一个与“admin”完全匹配的词,如果这是你唯一感兴趣的词,那么这是一个更好的答案。。。但我有一种感觉,您可能正在寻找包含字符串“admin”的其他单词