Параллельно с GNU: как создать команду, используя параметр --link для «расширения» позиционных аргументов? - PullRequest
1 голос
/ 24 июня 2019

проблема

Я использую GNU параллельно и хочу передать два файла в программу с помощью оператора :::. Мое дерево каталогов выглядит так:

$ ls 

SRR6301073_pass_1_trimmed.fq  
SRR6301073_pass_2_trimmed.fq  
SRR6301129_pass_1_trimmed.fq  
SRR6301129_pass_2_trimmed.fq  
...

Следующий код:

#!bin/bash
ones=$(find SRR*pass*1*.fq)
twos=$(find SRR*pass*2*.fq)    
parallel --link echo ::: $ones ::: $twos

Производит:

SRR6301033_pass_1_trimmed.fq SRR6301033_pass_2_trimmed.fq
SRR6301034_pass_1_trimmed.fq SRR6301034_pass_2_trimmed.fq
...

Но мне действительно нужно, чтобы вывод выглядел так:

-1 SRR6301033_pass_1_trimmed.fq -2 SRR6301033_pass_2_trimmed.fq
-1 SRR6301034_pass_1_trimmed.fq -2 SRR6301034_pass_2_trimmed.fq
...

Что я уже пробовал

Это:

$ parallel --link echo -1 ::: $ones -2 ::: $twos

производит

-1 SRR6301033_pass_1_trimmed.fq SRR6301033_pass_2_trimmed.fq
-1 SRR6301034_pass_1_trimmed.fq SRR6301034_pass_2_trimmed.fq

и это:

$ parallel --link echo -1 ::: $ones ::: $twos

Производит:

-1 SRR6301033_pass_1_trimmed.fq -2
-1 SRR6301034_pass_1_trimmed.fq SRR6301033_pass_2_trimmed.fq
-1 SRR6301037_pass_1_trimmed.fq SRR6301034_pass_2_trimmed.fq

1 Ответ

1 голос
/ 24 июня 2019

Я думаю, вы хотите это:

parallel --dry-run --link echo -1 {1} -2 {2} ::: a b ::: c d

Вывод

echo -1 a -2 c
echo -1 b -2 d
...