Ubuntu
grep 在 Fedora 和 Ubuntu 上的表現不同
所以當我在 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'
任何想法可能會發生什麼?我怎樣才能想出在兩個系統上都可以工作的東西?
grep -F '-ref.alleles'
相當於:
grep -F -ref.alleles
(撇號之間的字元都不是 shell 元字元,所以引用它們沒有任何效果。)
這又相當於:
grep -F -r -e f.alleles
通過正常解析
-
前綴選項。該-e
選項需要一個參數,但-F
不要-r
。由於您沒有為 grep 指定任何文件,因此預設行為是對標準輸入進行操作…除了該
-r
選項沒有意義,因此它預設為.
遞歸搜尋(目前目錄)並忽略標準輸入。在某些版本中。您需要在以as
--
開頭的正則表達式之前使用“沒有更多選項”指示符-
grep -F -- -ref.alleles
我追踪了
-r
沒有文件參數的行為發生變化的點。它是 2.11 版,於 2012 年 3 月 2 日發布。請參閱發佈公告。如果你
grep --version
在你的兩台機器上執行,我相信你會發現其中一台在 2.11 的錯誤一側