Ошибка при замене динамической строки GNU parallel

#gnu-parallel

#gnu-parallel

Вопрос:

У меня более 50 пар файлов с именами в следующем формате: AA-7R-76L1.clean.R1.fastq.gz , AA-7R-76L1.clean.R2.fastq.gz

Я попытался использовать parallel следующим образом:

 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

В чем здесь ошибка?

Комментарии:

1. Покажите нам вывод parallel --dr 'repair.sh...

2. Проблема устранена. Это было связано с «ошибкой версии». В старой версии 2016 была ошибка, в то время как новая версия 2020 не выдала никакой ошибки.

Ответ №1:

Что-то вроде:

 $ 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 не являются частью *-части имени).