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),要么将 > 留在外面(在在这种情况下,所有作业的所有输出都将在这里结束))。

于 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 回答