2012-07-09 20 views
13

से एक बैश स्क्रिप्ट चलाएं तो मेरे पास यह प्रोग्राम सैमटोल्स है जिसे मैं cmd ​​लाइन से उपयोग करना चाहता हूं, एक फ़ाइल को दूसरे में परिवर्तित करना चाहता हूं। यह इस तरह काम करता है:एक आर स्क्रिप्ट

bash-4.2$ 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}' - > filename.fasta) 

कोशिश कर रहा द्वारा काम करने के लिए नहीं मिल सकता है यह regexes का उपयोग कर तो अल्पविराम nd तर्क रिक्त स्थान और सामान से छुटकारा पाने के का मामला है सिस्टम (कमांड) पठनीय है? मैं यह कैसे करु?

संपादित करें:

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") 
+1

'प्रणाली का उपयोग करने में सक्षम होना चाहिए' तर्क के रूप में एक चरित्र स्ट्रिंग लगता है, इसलिए कोट्स में अपना तर्क लपेटने की जरूरत है। – Andrie

+0

मैंने पहले ही कोशिश की थी। उपरोक्त संपादन के रूप में दिखाया गया। – cianius

+1

सिस्टम को आजमाएं ("samtools देखें filename.bam | awk '{OFS = \" \ t \ "; प्रिंट \"> \ "$ 1 \" \ n \ "$ 10}' -> filename.fasta") आपको भागने की जरूरत है दो उद्धरण चिह्न, आर को पूरे आदेश को पढ़ने के क्रम में, पहले दो डबल उद्धरण चिह्नों के बीच केवल कमांड भाग के बजाय –

उत्तर

22

रास्ता डिबग करने के लिए यह करने के लिए cat उपयोग करने के लिए है परीक्षा चाहे आपकी वर्ण स्ट्रिंग ठीक से बच गई हो। तो:

  1. अपने स्ट्रिंग
  2. ध्यान से सभी विशेष वर्ण से बचें के साथ एक वस्तु x बनाएं, इस मामले उद्धरण और बैकस्लैश
  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) 
+0

हां, मुझे यह सीखना होगा कि इसे स्वयं कैसे डिबग करें। धन्यवाद एंड्री! – cianius

+1

@Andrie मेरे पास 'c:/test" 'name'test.sh' के साथ फ़ोल्डर में एक बैश स्क्रिप्ट सुरक्षित है। मैं इस कोड को आर कोड में कॉल करना चाहता हूं। मैं इस सिस्टम के कमांड को आजमाता हूं लेकिन एक त्रुटि हो रही है प्रिय क्या आप मेरी मदद करेंगे? –

संबंधित मुद्दे