本文介绍了从的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:
- Create an object
x
with your string - Carefully escape all the special characters, in this case quotes and backslashes
- 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脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!