所以我有这个程序samtools我想从cmd行使用,将一个文件转换为另一个文件。它的工作原理如下:
bash-4.2$ samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta
由于我想自动执行此操作,因此我希望使用R脚本自动执行此操作。我知道您可以使用system()来运行操作系统命令,但我无法通过尝试
来使其工作system(samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta)
是否只是使用正则表达式去除空格和东西,所以逗号参数系统(命令)是可读的?我该怎么做呢?
编辑:
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 \”&gt; \“$ 1 \”\ n \“$ 10}' - &gt; filename.fasta”)< / p>
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")
答案 0 :(得分:24)
调试方法是使用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)