grep de uma variável shell não encontra nada

2

Eu tenho algum problema com o grep. Eu escrevi um script que precisa encontrar alguns números de uma lista (nome do arquivo ContigsNames ) em um banco de dados. Eu escrevi o seguinte script:

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"

Como verificação, eu insiro uma linha grep com um número específico que está na lista e funciona muito bem! então parece que tem algum problema com o '$ f1'. Quando estou fazendo eco "$ f1", imprime os números certos sem problemas.

Qual pode ser o problema? Pode estar relacionado ao tipo "string" em vez de número?

    
por lizi 04.11.2014 / 13:35

1 resposta

2

Você coloca aspas simples em torno de $f1 , o que faz com que não seja expandido, você deve usar aspas duplas. Dependendo do valor de f1 , ele pode ser interpretado como uma opção, como Stephane indicou (em vez de uma expressão regular), então você tem que ser explícito sobre isso:

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"
    
por 04.11.2014 / 13:42