使用默认终端在MacOSX 10.13.3上运行。当我尝试使用grep命令时,我会接收到它作为输出。不管发生什么。我已经更改了目录、选项,甚至grep本身也会返回相同的内容。它返回:
grep: conflicting matchers specified最近,我用Homebrew安装了一些新的命令行工具,并且相信我在这个过程中运行了brew install grep,以便在我的计算机上获得正式的linux版本。这是我所能想到的唯一可能导致这一切的变化。
这是痕迹。如您所见,grep命令成功运行,但输出是错误消息,而不是结果:
命令
grep -l 'this' *.txt跟踪
+ grep -GFh -l this ga_users.txt montecitovt_apache_logs-2018-02-09_21-58-40.txt tag_manager_more_than_one_ga_account.txt urls_in_sitemap.txt
grep: conflicting matchers specified
++ update_terminal_cwd
++ local url_path=
++ local i ch hexch LC_CTYPE=C LC_ALL=
...
[REDACTED]发布于 2018-02-26 23:38:28
正如您在跟踪的第一行中看到的那样,grep接收的第一个参数是-GFh。
-G指定正则表达式,而-F指定固定字符串。这些当然是不相容的。
还不清楚为什么grep会以grep -GFh ....的形式执行,但最有可能的可能(如评论中所建议的)可能是别名。您可以使用alias grep (它将打印grep是否为别名)或更通用的type grep (例如,如果grep被定义为一个函数,它会告诉您)来验证这一点。
发布于 2018-02-27 00:01:42
我在我的grep中将~./bashrc设置为别名。在评论中,聪明的人让我意识到了这一点,他们注意到grep被调用时已经设置了选项。我删除了grep的别名,一切都很好。
发布于 2020-01-13 18:05:33
我有“堆叠”的别名:
alias grep='grep --color=auto -i --perl-regexp'
alias fgrep='grep -Fi --color=auto'将第二个反斜杠改为\grep (前导反斜杠)使它们不堆栈。
https://stackoverflow.com/questions/48998775
复制相似问题