shell 变量的 grep 找不到任何内容

shell 变量的 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"

作为检查,我输入了包含列表中特定数字的 grep 行,效果非常好!所以看起来“$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"

相关内容