嵌套循环中BCFtools无法读取区域的问题求助
VCF文件区域过滤脚本执行异常问题
待处理文件内容
我有一个包含区域信息的文本文件,内容如下:
chr2:1-26910392 chr2:26910393-53820784 chr2:53820785-80731176 chr2:80731177-107641568
执行的过滤脚本
我编写了一段Bash脚本,逐行读取上述文件的区域信息,用于过滤VCF文件:
count=0 for i in 2; do while IFS= read -r line; do ((count+=1)) echo "$i" echo "$line" echo "$count" bcftools view -Oz --regions $line /scratch4/chr"$i"_nsconcat2.ALLChr.vcf.gz > /scratch4/split_contig/split_"$count"_"$i"_nsconcat2.ALLChr.vcf.gz done < /scratch4/chr"$i".txt done
报错信息
脚本执行后抛出错误:
无法读取区域:chr2:1-26910392 [E::_regions_init_string] 无法解析区域:chr2:1-26910392
排查细节
- 手动执行对应命令可正常运行:
bcftools view -Oz --regions chr2:1-26910392 /scratch4/chr2_nsconcat2.ALLChr.vcf.gz >/scratch4/split_contig/split_0_2_nsconcat2.ALLChr.vcf.gz
- 脚本中
echo输出内容正常,显示结果如下:
2 chr2:1-26910392 0 2 chr2:26910393-53820784 1 2 chr2:53820785-80731176 3 2 chr2:80731177-107641568 4
- 修改
while循环条件为while IFS= read -r line || [[ -n "$line" ]]; do后,最后一行区域的过滤命令可正常执行。 - 已确认文本文件中每行仅包含一个区域字符串。
内容的提问来源于stack exchange,提问作者Gabriel G.
相关产品推荐
相关产品推荐

