forループとgrepを同時に使用しようとすると、空白に少し問題があるようです。たとえば、「k117_196509」ではなく「k117_19650」を一致させようとするため、スペースが重要です。どうぞよろしくお願いします!
for i in 'k117_19650 ' 'k117_460555 ';do
grep -A1 $i final.contigs.fa >> gene.fa
done
ベストアンサー1
直面している問題は、シェル変数の使用に関連しています。特に、スペースなどの「非標準」文字を含む変数を使用する場合、常に変数を引用してください。これを使用する場合は、ここで議論を参照してください。
- bash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク
- スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか? (これら2つはStéphane Chazelasの提案に基づいています)
- スタックオーバーフロー時またはここ。
あなたの場合:
grep -A1 -- "$i" final.contigs.fa >> gene.fa
トリックを実行する必要があります(で始まる値を--
避けるためにここに1つを追加してください)。$i
-