2012-03-01 3 views
0

У меня есть эта линияработы в командной строке, но не в сценарии оболочки

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

тире между -S и -b, как предполагается, чтобы указать программе, что она из STDIN. Я могу запустить его из скрипта perl в командной строке, но как только я попытаюсь переместить его в сценарий оболочки, он просто создает файл без вывода каких-либо данных. Любые идеи очень приветствуются.

+5

Где код Perl ...? – TLP

+0

Где скрипт оболочки? – user1126070

ответ

0

В сценарии оболочки $ A в одинарные кавычки, не будет расширен:

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 

Также вы упомянули вы переместили команду в сценарий оболочки. Сценарий оболочки делает что-то еще? Если он все еще не работает, я бы опубликовал это для нас, чтобы посмотреть.

+0

сценарий оболочки для a в {1..22} do samtools view -h AD3.sorted.bam | awk '$ 3 == "chr $ a" ||/^ @/'| samtools view -S - -b -o chr $ a.bam сделано – user1234579

Смежные вопросы