Exécuter un script bash à partir d'un script R
J'ai donc ce programme samtools que je veux utiliser de ligne de cmd, la conversion d'un fichier à l'autre. Il fonctionne comme ceci:
bash-4.2$ samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta
Que je veux automatiser cela, je voudrais automatiser à l'aide d'un script R. Je sais que vous pouvez utiliser system() pour exécuter une commande de systèmes d'exploitation, mais je ne peux pas le faire fonctionner en essayant
system(samtools view filename.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > filename.fasta)
Est-ce juste une question de regexes pour se débarrasser des espaces et des trucs si la virgule nd argument(système de commande) est-il lisible? Comment dois-je faire?
EDIT:
système("samtools afficher le nom de fichier.bam | awk '{OFS="\t"; print ">"$1"\n"$10}' - > first_batch_1.fasta")
Erreur inattendue d'entrée dans "system("samtools afficher le nom de fichier.bam | awk '{OFS="\"
EDIT2:
système("samtools afficher le nom de fichier.bam | awk '{OFS=\"\t\"; print \">\"$1\"\n\"$10}' - > nom de fichier.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:
Et le gagnant est:
system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
system()
prend une chaîne de caractères comme argument, si vous avez besoin d'envelopper vos arguments entre guillemets.Je l'avais essayé déjà. Montré que modifier ci-dessus.
essayez système("samtools afficher le nom de fichier.bam | awk '{OFS=\"\t\"; print \">\"$1\"\n\"$10}' - > nom de fichier.fasta") Vous avez besoin d'échapper les guillemets doubles, afin de R pour lire l'intégralité de la commande, au lieu de seulement la partie de commande entre les deux premiers guillemets doubles
EDIT2: indique que votre suggestion ne fonctionne pas. Échapper à toutes les citations à l'intérieur de la awk regex fait de ne pas fonctionner correctement.
Souldn pas vous aussi à s'échapper de l'barres obliques inverses?
system("samtools view filename.bam | awk '{OFS=\"\\t\"; print \">\"$1\"\\n\"$10}' -> filename.fasta")
OriginalL'auteur cianius | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
La façon de débogage est d'utiliser
cat
pour tester si votre chaîne de caractères a été échappé correctement. Donc:x
avec votre chaînecat(x)
pour inspecter la chaîne résultante.Par exemple:
Si cela donne de la chaîne correcte, alors vous devriez être en mesure d'utiliser
j'ai un script bash coffre-fort dans
"c:/test"
dossier avec le nomtest.sh
. Je veux appeler ce script bash dans la r code. J'ai essayer cettesystem
de commande, mais une erreur cher pouvez-vous m'aider?OriginalL'auteur Andrie