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"