我有以下 GNU 并行命令。
parallel --gnu --jobs 4 \
normalize-by-median.py \
-k 20 -C 20 --paired -N 4 -x 6e9 \
--out pdom-{}-diginorm.fq \
pdom-{}.fq.gz \
::: 200bp 500bp 1kb 3kb 8kb
我想在写入磁盘之前压缩输出。通常我会把它通过管道传递给gzip -c
,但不幸的是这个特定的 Python 脚本没有将输出发送到 stdout 的选项。然后我想我可以使用进程替换来代替。我尝试了以下方法。
parallel --gnu --jobs 4 \
normalize-by-median.py \
-k 20 -C 20 --paired -N 4 -x 6e9 \
--out >(gzip -c - > pdom-{}-diginorm.fq.gz) \
pdom-{}.fq.gz \
::: 200bp 500bp 1kb 3kb 8kb
然而,后一个示例中的花括号由子进程按字面意思解释,而不是作为 GNU 并行参数的占位符。有什么办法可以让它发挥作用吗?
你的问题是 >() 在 GNU Parallel 启动之前就被解释了。所以你需要引用它来将其提供给 GNU Parallel:
parallel --gnu --jobs 4 \
normalize-by-median.py \
-k 20 -C 20 --paired -N 4 -x 6e9 \
--out '>(gzip -c - > pdom-{}-diginorm.fq.gz)' \
pdom-{}.fq.gz \
::: 200bp 500bp 1kb 3kb 8kb
对于版本 >20140822,您可以执行以下操作:
parallel --plus --gnu --jobs 4 \
normalize-by-median.py \
-k 20 -C 20 --paired -N 4 -x 6e9 \
--out '>(gzip > {..}-diginorm.fq.gz)' \
{} \
::: pdom-*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)