命令失败,因为并行冲突的双引号与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"
答案 0 :(得分: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"
答案 1 :(得分:2)
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)或者离开>外部(在这种情况下,所有作业的所有输出都将在此处结束))。
答案 2 :(得分: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"