Pergunta

eu tenho essa linha

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

o traço entre -S e -b deve indicar ao programa que é de STDIN.Posso executá-lo a partir de um script Perl na linha de comando, mas assim que tento movê-lo para um script Shell, ele apenas cria o arquivo sem gerar nenhum dado.Qualquer idéia seria muito apreciada.

Foi útil?

Solução

Em um script de shell, $a entre aspas simples não será expandido:

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 

Outras dicas

Se ainda não o fez, dê uma olhada no Perguntas frequentes sobre samtools.Contém exemplos de como fazer coisas semelhantes ao que você deseja fazer com seu pipeline.

Já faz um tempo que não uso o samtools, mas teria escrito seu comando assim:

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

Você também mencionou que moveu o comando para um script de shell.O script de shell está fazendo mais alguma coisa?Se ainda não funcionar, eu postaria isso para gente ver.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top