grep과 공백이 포함된 For 루프

grep과 공백이 포함된 For 루프

for 루프와 grep을 동시에 사용하려고 하면 공백에 약간의 문제가 있는 것 같습니다. 예를 들어 "k117_196509"가 아닌 "k117_19650"을 일치시키려고 하기 때문에 공백이 중요합니다. 도움을 주시면 대단히 감사하겠습니다!

for i in 'k117_19650 ' 'k117_460555 ';do
    grep -A1 $i final.contigs.fa >> gene.fa
done

답변1

직면하고 있는 문제는 쉘 변수 사용과 관련이 있습니다. 특히 공백 등 "비표준" 문자가 포함된 변수를 사용할 경우,항상 변수를 인용하세요.이를 사용할 때 여기에서 토론을 참조하십시오.

귀하의 경우:

grep -A1 -- "$i" final.contigs.fa >> gene.fa

트릭을 수행해야 합니다( 로 시작하는 값을 --방지하려면 여기에 하나를 추가하세요 ).$i-

답변2

이렇게 구분하려면('k117_19650'과 일치하지만 'k117_196509'와 일치하지 않음) which를 사용하여 하위 문자열 대신 전체 단어를 검색하도록 할 수 -w있습니다 grep.

for i in k117_19650 k117_460555 ;do
    grep -w -A1 "$i" final.contigs.fa >> gene.fa
done

관련 정보