シェル変数のgrepは何も見つかりません。

シェル変数のgrepは何も見つかりません。

grepの使用にはいくつかの問題があります。リスト(ファイル名)でいくつかの数字を見つける必要があるスクリプトを作成しました。コンティグ名)データベースにあります。私は次のスクリプトを書いた。

file=ContigsNames
while IFS=' ' read -r f1 f2
do
    grep '$f1' /data/databases/fasta/lizih/metagenemark_predictions.faa 
    #grep 1703496 /data/databases/fasta/lizih/metagenemark_predictions.faa
done < "$file"

チェックディメンションで、リストの特定の数字を含む行を見つけましたが、うまくいきました!したがって、「$ f1」に問題があるようです。 echo "$f1" を実行すると、問題なく正しい数字が印刷されます。

何が問題なのでしょうか?数字の代わりに「文字列」タイプに関連している可能性がありますか?

ベストアンサー1

一重引用符で囲んで$f1拡張できないため、二重引用符を使用する必要があります。その値によってf1(正規表現ではなく)Stephaneが指定したオプションとして解釈される可能性があるため、明示的に指定する必要があります。

file=ContigsNames
while IFS=' ' read -r f1 f2
do
    grep -Fe "$f1" /data/databases/fasta/lizih/metagenemark_predictions.faa 
    #grep 1703496 /data/databases/fasta/lizih/metagenemark_predictions.faa
done < "$file"

おすすめ記事