Gre*_*Ant 13 ubuntu bash fedora grep
所以当我在 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
Run Code Online (Sandbox Code Playgroud)
但是当我在 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'
Run Code Online (Sandbox Code Playgroud)
任何想法可能会发生什么?我怎样才能想出在两个系统上都能正常工作的东西?
小智 30
grep -F '-ref.alleles'
Run Code Online (Sandbox Code Playgroud)
相当于:
grep -F -ref.alleles
Run Code Online (Sandbox Code Playgroud)
(撇号之间的字符都不是 shell 元字符,因此引用它们无效。)
这又相当于:
grep -F -r -e f.alleles
Run Code Online (Sandbox Code Playgroud)
通过-前缀选项的正常解析。该-e选项需要一个说法,但-F并-r没有。
由于您没有为 grep 指定任何文件,因此默认行为是对标准输入进行操作...除了该-r选项没有意义,因此它默认为.递归搜索(当前目录)并忽略标准输入。在某些版本中。
你需要使用--一个正则表达式之前,“没有更多的选择”的指标,开始与-作为
grep -F -- -ref.alleles
Run Code Online (Sandbox Code Playgroud)
我追踪了-r没有文件参数的行为改变的点。它的版本为 2.11,于 2012 年 3 月 2 日发布。请参阅发布公告。
影响行为的 git 提交是this one和this one。
如果你grep --version在你的两台机器上运行,我相信你会发现其中一台在 2.11 的错误一侧
领先-是问题。要获得相同的结果,请添加--:
grep -F -- '-ref.alleles'
Run Code Online (Sandbox Code Playgroud)
来自man bash:
A -- signals the end of options and disables further option
processing. Any arguments after the -- are treated as filenames
and arguments.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
967 次 |
| 最近记录: |