所以当我在 Fedora 中运行它时,我看到了这个:
$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles 2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
2R-ref.alleles
但是当我在 Ubuntu(相同数据)上运行时,我没有从 grep 中得到任何结果:
$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles 2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
任何想法可能会发生什么?我怎样才能想出在两个系统上都可以工作的东西?
相当于:
(撇号之间的字符都不是 shell 元字符,所以引用它们没有任何效果。)
这又相当于:
通过正常解析
-
前缀选项。该-e
选项需要一个参数,但-F
不要-r
。由于您没有为 grep 指定任何文件,因此默认行为是对标准输入进行操作...除了该
-r
选项没有意义,因此它默认为.
递归搜索(当前目录)并忽略标准输入。在某些版本中。您需要在以as
--
开头的正则表达式之前使用“没有更多选项”指示符-
我追踪了
-r
没有文件参数的行为发生变化的点。它是 2.11 版,于 2012 年 3 月 2 日发布。请参阅发布公告。影响行为的 git 提交是this和this。
如果你
grep --version
在你的两台机器上运行,我相信你会发现其中一台在 2.11 的错误一侧领先
-
是问题。要获得相同的结果,请添加--
:来自
man bash
:检查 .bashrc 是否在您的 grep 命令上有任何别名覆盖了它的行为。也许这就是问题所在。也可以尝试不带“-F”参数的 grep。