首页 > 解决方案 > GNU 并行动态字符串替换中的错误

问题描述

我有 50 多个文件对,其名称格式如下:AA-7R-76L1.clean.R1.fastq.gz、AA-7R-76L1.clean.R2.fastq.gz

我尝试通过以下方式使用并行:

parallel --plus echo {%R..fastq.gz} ::: *.fastq.gz |parallel 'repair.sh in1={}.R1.fastq.gz in2={}.R2.fastq.gz out1={}.repd.R1.fastq.gz out2={}.repd.R2.fastq.gz outs={}.singletons.fastq.gz repair'

--plus echo应动态替换R1.fastq.gz, R2.fastq.gz以捕获样本名称,即HB-7R-25L0.clean. 然后它应该将它提供给repair.sh

我得到的错误是,第一部分提取了整个文件名并且没有捕获样本名称。因此 in1 和 in2 变为AA-7R-76L1.clean.R1.fastq.gz.R1.fastq.gz and AA-7R-76L1.clean.R2.fastq.gz.R2.fastq.gz

这里有什么错误?

标签: gnu-parallel

解决方案


就像是:

$ parallel --plus --dry-run  'repair.sh in1={} in2={/R1/R2} out1={/R1/fixed.R1} out2={/R1/fixed.R2} outs={%.R1.fastq.gz}_singletons.fastq repair' ::: *R1.fastq.gz

(假设 R1 和 R2 不是名称的 * 部分)。


推荐阅读