【发布时间】:2012-07-09 12:40:49
【问题描述】:
所以我有这个程序 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 查看文件名.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' -> first_batch_1.fasta") 错误:"system("samtools view filename.bam | awk '{OFS="\"
中出现意外输入
编辑2:
system("samtools 查看文件名.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
>
编辑3: 获胜者是:
system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
【问题讨论】:
-
system()将字符串作为参数,因此您需要将参数用引号括起来。 -
我已经尝试过了。如上所示编辑。
-
try system("samtools view filename.bam | awk '{OFS=\"\t\"; print \">\"$1\"\n\"$10}' -> 文件名。 fasta") 您需要转义双引号,以便 R 读取整个命令,而不仅仅是前两个双引号之间的命令部分
-
EDIT2:表明您的建议不起作用。转义 awk 正则表达式中的所有引号会使其无法正常工作。
-
你不也能避开反斜杠吗?
system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")