从的R脚本运行bash脚本

从的R脚本运行bash脚本

本文介绍了从的R脚本运行bash脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我有我想从CMD行中使用,一个文件转换为另一种这个程序samtools。它的工作原理是这样的:

 的bash-4.2 $ samtools查看filename.bam | AWK'{OFS =\\ t的;打印>$ 1\\ n$ 10}' - > filename.fasta

因为我想自动执行此,我想通过使用的R脚本来自动完成它。我知道你可以使用system()来运行操作系统命令,但我不能让它通过努力工作

 系统(samtools查看filename.bam | awk的'{OFS =\\ t的;打印>$ 1\\ n$ 10}' - > filename.fasta)

这是否只是一种使用正则表达式来摆脱空间和东西,所以逗号次论证系统(命令)是可读的事?我该怎么做呢?

编辑:

EDIT2:

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:And the winner is:

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

The way to debug this is to use cat to test whether your character string has been escaped correctly. So:

  1. Create an object x with your string
  2. Carefully escape all the special characters, in this case quotes and backslashes
  3. Use cat(x) to inspect the resulting string.

For example:

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

If this gives the correct string, then you should be able to use

system(x)

这篇关于从的R脚本运行bash脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 11:41