微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从R脚本运行bash脚本

所以我有这个程序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”)
Error: unexpected input in “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")
调试方法是使用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)

原文地址:https://www.jb51.cc/bash/387029.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐