Подтвердить что ты не робот

Запустите bash script из R script

Итак, у меня есть эта программа samtools, которую я хочу использовать из строки cmd, конвертируя один файл в другой. Он работает следующим образом:

bash-4.2$ samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta

Как я хочу автоматизировать это, я хотел бы автоматизировать его с помощью R script. Я знаю, что вы можете использовать system() для запуска команды ОС, но я не могу заставить ее работать, попробовав

system(samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta)

Это просто вопрос использования регулярных выражений, чтобы избавиться от пробелов и т.д., чтобы система запятой (команда) читалась? Как мне это сделать?

EDIT:

system ( "samtools view filename.bam | awk '{OFS =" \t "; print" > "$ 1" \n "$ 10}' → first_batch_1.fasta" ) Ошибка: неожиданный ввод в "system (" samtools view filename.bam | awk "{OFS =" \"

EDIT2:

system ( "samtools view filename.bam | awk '{OFS = \" \t\ "; print \" > \ "$ 1 \" \n\ "$ 10}' → filename.fasta" )

awk: cmd. line:1: {OFS="    "; print ">"$1"
awk: cmd. line:1:                         ^ unterminated string
awk: cmd. line:1: {OFS="    "; print ">"$1"
awk: cmd. line:1:                         ^ syntax error
> 

EDIT3: И победитель:

system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
4b9b3361

Ответ 1

Чтобы отладить это, нужно использовать cat для проверки правильности экранирования вашей символьной строки. Итак:

  • Создайте объект x со своей строкой
  • Осторожно избегайте всех специальных символов, в этом случае кавычки и обратные косые черты
  • Используйте cat(x) для проверки полученной строки.

Например:

x <- 'samtools view filename.bam | awk \'{OFS="\\t"; print ">"$1"\\n"$10}\' - > filename.fasta'

cat(x)
samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta

Если это дает правильную строку, вы должны иметь возможность использовать

system(x)