我有一个奇怪的fgrep问题,似乎是MacOSX特有的(意外的行为不会发生在Ubuntu Linux上)。
我的文件("qlist")中有以下行(没有空格)
CMGC_CDK1
CMGC_CDK2
CMGC_CDK10
我的文件"biglist"中有以下几行:
CMGC_CDK1
CMGC_CDK10
CMGC_CDK11A
CMGC_CDK11B
CMGC_CDK12
CMGC_CDK13
CMGC_CDK14
CMGC_CDK15
CMGC_CDK16
CMGC_CDK17
CMGC_CDK18
CMGC_CDK19
CMGC_CDK2
CMGC_CDK20
我想发出一个fgrep命令,它只返回qlist中内容的精确匹配(逐行)。
fgrep -someflags -f qlist biglist
CMGC_CDK1
CMGC_CDK2
CMGC_CDK10
但是标志-x和-w没有给出预期的结果。
如果我发出命令:
fgrep -w -f qlist biglist
或
fgrep -x -f qlist biglist
我得到
CMGC_CDK1
CMGC_CDK2
我所期待(和想要)的是:
CMGC_CDK1
CMGC_CDK10
CMGC_CDK2
这就好像搜索项文件(命令中的"qlist")有一行是另一行(CMGC_CDK1,CMGC_CDK10)的子字符串,这在某种程度上抑制了将CMGC_CDK10用作搜索项。
注意:在Ubuntu Linux上,我得到了预期的结果。这似乎是Mac OS X fgrep特有的。我在Mac OS X 10. 15. 1上,在Unix终端窗口中使用默认安装的fgrep进行此操作。
我错过了什么?我该怎么做?
谢谢,罗兰德
1条答案
按热度按时间kx1ctssn1#
在macOS终端中使用GNU grep,它可以按预期工作。
我的电脑安装了GNU grep。您可以通过以下方式轻松安装:
这将使你的生活更容易作为Mac用户。你也可以安装coreutilities允许你使用GNU版本的命令在Mac终端。你仍然可以使用macOS版本。这也将解决你的
cat
命令问题。当我尝试使用
fgrep
时,这是我在macOS终端上收到的警告:请注意,ggrep在我的系统中只是指GNU grep