我有这条线
samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o output
-S和-b之间的短划线应该向程序指示它来自STDIN。我可以从命令行上的perl脚本运行它,但是一旦我尝试将其移动到shell脚本中,它就会创建文件而不输出任何数据。任何想法都将不胜感激。
答案 0 :(得分:0)
如果您还没有,请查看samtools FAQ。这个例子可以用来做你想要用管道做的事情。
自从我使用samtools以来已经有一段时间了,但我会像这样编写你的命令:
samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S -b - > output.bam
您还提到您已将命令移至shell脚本。 shell脚本还在做什么吗?如果它仍然不起作用,我会发布给我们看看。
答案 1 :(得分:0)
在shell脚本中,$ a inside单引号不会被展开:
for a in {1..22} do
samtools view -h AD3.sorted.bam | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o chr$a.bam
done