samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o output
了-S和-B之间的破折号应该指示的程序,它是从标准输入。我可以从命令行上的perl脚本运行它,但只要我尝试将其移入shell脚本,它就会创建文件而不输出任何数据。任何想法将不胜感激。
samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o output
了-S和-B之间的破折号应该指示的程序,它是从标准输入。我可以从命令行上的perl脚本运行它,但只要我尝试将其移入shell脚本,它就会创建文件而不输出任何数据。任何想法将不胜感激。
在shell脚本中单引号里面的$一个不会被扩大:
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
如果您还没有看过,请看samtools FAQ。这里有一些例子可以用来处理你想要对你的管道做类似的事情。
它已经有一段时间,因为我用samtools,但我会写你的命令是这样的:
samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S -b - > output.bam
另外你提到你搬到命令shell脚本。 shell脚本是否在做其他事情?如果它仍然不起作用,我会张贴,让我们看看。
{1..22}的shell脚本 做 samtools查看-h AD3.sorted.bam | awk'$ 3 ==“chr $ a”||/^ @ /'| samtools view -S - -b -o chr $ a.bam done – user1234579 2012-03-02 14:36:17
哪里Perl代码...? – TLP 2012-03-02 00:05:38
shell脚本在哪里? – user1126070 2012-03-02 08:09:37