2012-03-01 121 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

相關問題