OFS="\t" の二重引用符と並列競合の二重引用符が原因で、コマンドが失敗します。それを機能させることができる提案はありますか?ありがとう!
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"
OFS="\t" の二重引用符と並列競合の二重引用符が原因で、コマンドが失敗します。それを機能させることができる提案はありますか?ありがとう!
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"
「外部」の二重引用符があるため、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"
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
(最後の > を引用すると、実行中のすべてのジョブが test.txt に書き込もうとするため、競合状態が発生します。固有の名前 ({}.out または job{#}.out) を付けるか、> を外側 (inこの場合、すべてのジョブからのすべての出力がここで終了します))。
"
を使用して、引用符内でエスケープでき\
ます。
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"