为什么这个grep -F不起作用?

时间:2015-11-28 07:54:03

标签: grep ubuntu-14.04

我在工作中广泛使用grep -F(CentOS)来忽略匹配中的正则表达式模式。现在,我在家尝试的是什么(Ubuntu 14.04):

$ cat file

Here is
the -F
you were looking 
for!

~$ grep -F '-F' file
_

下划线用于显示闪烁的光标,就像它正在等待输入一样。可能是因为Ubuntu grep没有关注所有POSIX开关(我读过POSIX指定-F)或者我在某个地方犯了错误?&#39; < / p>

=====更新======

有趣的是,只有在-F之后有换行符时才会失败。如果您将文本更改为-F option,则该行匹配。 grep中的一个错误?

1 个答案:

答案 0 :(得分:1)

两次指定相同的参数无效,所以

grep -F file

file相同,当然在标准输入中搜索固定字符串-F

单引号是红鲱鱼。它们保护grep免受shell的任何扩展(如glob扩展,变量扩展,命令替换等),并在-F看到grep之前被shell删除。

您需要做的是使用-e pattern的{​​{1}}参数:

grep -F -e '-F'  file

鉴于该上下文,-F将被解释为模式。单引号仍然是多余的。你可以单独引用其他arg。我让他们离开了,因为它帮助人们乍看之下得出了正确的结论,并且在脚本的未来版本中引用可以包含shell元字符的内容通常是不错的做法,即使它目前是安全的。