2

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"
4

3 に答える 3

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"
于 2012-04-09T22:27:17.480 に答える
3

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この場合、すべてのジョブからのすべての出力がここで終了します))。

于 2012-09-07T16:38:39.913 に答える
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"
于 2012-04-09T22:15:19.983 に答える