Grep
帶有 grep 和空格的 for 循環
嘗試同時使用 for 循環和 grep 時,我似乎對空格有點問題。空格很重要,因為例如,我想匹配“k117_19650”,而不是“k117_196509”。幫助將不勝感激!
for i in 'k117_19650 ' 'k117_460555 ';do grep -A1 $i final.contigs.fa >> gene.fa done
您面臨的問題與您對 shell 變數的使用有關。特別是在使用包含“非標準”字元(例如空格)的變數時,請始終在使用它們時引用您的變數,請參見此處的討論:
- 忘記在 bash/POSIX shell 中引用變數的安全隱患
- 為什麼我的 shell 腳本會因空格或其他特殊字元而窒息? (這兩個根據 Stéphane Chazelas 的建議)
- 在 stackoverflow或這裡。
在你的情況下:
grep -A1 -- "$i" final.contigs.fa >> gene.fa
應該可以解決問題(這裡還添加一個
--
以防止以$i
開頭的值-
)。