我在工作中广泛使用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中的一个错误?
答案 0 :(得分:1)
两次指定相同的参数无效,所以
grep -F file
与file
相同,当然在标准输入中搜索固定字符串-F
。
单引号是红鲱鱼。它们保护grep
免受shell的任何扩展(如glob扩展,变量扩展,命令替换等),并在-F
看到grep
之前被shell删除。
您需要做的是使用-e pattern
的{{1}}参数:
grep -F -e '-F' file
鉴于该上下文,-F
将被解释为模式。单引号仍然是多余的。你可以单独引用其他arg。我让他们离开了,因为它帮助人们乍看之下得出了正确的结论,并且在脚本的未来版本中引用可以包含shell元字符的内容通常是不错的做法,即使它目前是安全的。