2012-04-09 12 views
2

Befehl fehlschlägt wegen doppelten Anführungszeichen für parallelen Konflikt mit doppelten Anführungszeichen für OFS = "\ t". Irgendwelche Vorschläge können es funktionieren lassen? Vielen Dank!zwei Paare von doppelten Anführungszeichen Konflikt in gnu parallel

ls *bed | parallel -j 10 "intersectBed -a good-genes.gff -b {} -c | awk 'BEGIN{OFS="\t";} {print $1,$9,$4,$5,$7,$10}' > test.txt" 

Antwort

1

können Sie entkommen " in Anführungszeichen mit dem \:

ls *bed | parallel -j 10 "intersectBed -a good-genes.gff -b {} -c | awk 'BEGIN{OFS=\"\t\";} {print $1,$9,$4,$5,$7,$10}' > test.txt" 
+0

habe es, danke zigdon – user1269298

+0

Cool - Sie sollten die Antwort dann akzeptieren, wenn es für Sie funktioniert :) – zigdon

3

Da Sie „äußere“ doppelte Anführungszeichen haben, Sie auch Probleme $ Variablen mit dem awk haben würde. Ich würde es in Stücke brechen:

awk_body='BEGIN{OFS="\t";} {print $1,$9,$4,$5,$7,$10}' 
ls *bed | parallel -j 10 "intersectBed -a good-genes.gff -b {} -c | awk '$awk_body' > test.txt" 
+0

groß, danke Glenn! – user1269298

2

GNU Parallel mit nur zitieren Teil des Skripts OK ist:

ls *bed | parallel -j 10 intersectBed -a good-genes.gff -b {} -c \| awk \''BEGIN{OFS="\t\";} {print $1,$9,$4,$5,$7,$10}'\' > test.txt 

(die letzte Zitiert> eine Race-Bedingung, da alle laufenden Aufträge verursachen Versuchen Sie, in test.txt zu schreiben, entweder geben Sie ihm einen eindeutigen Namen ({} .out oder job {#}. out) oder lassen Sie das> outside (in diesem Fall werden alle Ausgaben von allen Jobs hier enden)).

Verwandte Themen