2012-04-09 15 views
2

OFS = "\ t"の二重引用符とのパラレル競合のため、二重引用符でコマンドが失敗します。どんな提案でも動作させることができますか?ありがとう!gnuパラレルでの二重引用符の二重対の衝突

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" 

答えて

1

あなたは\で引用符で"をエスケープすることができます

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

ありがとうzigdon – user1269298

+0

クール - それはあなたのために働いた場合、答えを受け入れる必要があります:) – zigdon

3

をあなたは「外部」二重引用符を持っているので、あなたもawkの$変数とのトラブルを持っているつもりです。私はチャンクにそれを破るだろう:

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

偉大な、おかげでグレン! – user1269298

2

GNUパラレルは、あなたのスクリプトの一部を引用してOKです。

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 

は(最後の言葉を引用>実行中のすべてのジョブとして競合状態が発生しますしますtest.txtに書き込もうとすると、一意の名前({} .outまたはjob {#}。out)を指定するか、> outside(すべてのジョブのすべての出力がここで終わります))。