簡體   English   中英

從R腳本運行bash腳本

[英]Run a bash script from an R script

所以我有這個程序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 \\”> \\“$ 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")

調試方法是使用cat來測試你的字符串是否已被正確轉義。 所以:

  1. 使用您的字符串創建對象x
  2. 小心地逃避所有特殊字符,在這種情況下引號和反斜杠
  3. 使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM