2012-03-01 99 views
0

我这行作品在命令行上而不是在一个shell脚本

samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o output 

了-S和-B之间的破折号应该指示的程序,它是从标准输入。我可以从命令行上的perl脚本运行它,但只要我尝试将其移入shell脚本,它就会创建文件而不输出任何数据。任何想法将不胜感激。

+5

哪里Perl代码...? – TLP 2012-03-02 00:05:38

+0

shell脚本在哪里? – user1126070 2012-03-02 08:09:37

回答

0

在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 
0

如果您还没有看过,请看samtools FAQ。这里有一些例子可以用来处理你想要对你的管道做类似的事情。

它已经有一段时间,因为我用samtools,但我会写你的命令是这样的:

samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S -b - > output.bam 

另外你提到你搬到命令shell脚本。 shell脚本是否在做其他事情?如果它仍然不起作用,我会张贴,让我们看看。

+0

{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

相关问题